# io.github.Smartoire/paxaver-mcp (remote · mcp.paxaver.com)

MCP adapter for the Paxaver school community platform. Streamable HTTP, OAuth 2.1, capability auth.

- Trust score: 95/100 (high trust)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `mcp.paxaver.com`: 95/100 (this document), [markdown](https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp.md), [page](https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.paxaver.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `2.4.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3814 tokens (~127/item across 30 items; 26 tools + 4 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 90/100
  - Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.Smartoire/paxaver-mcp server?

io.github.Smartoire/paxaver-mcp is a hosted endpoint at https://mcp.paxaver.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http smartoire-paxaver-mcp 'https://mcp.paxaver.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "smartoire-paxaver-mcp": {
      "url": "https://mcp.paxaver.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "smartoire-paxaver-mcp": {
      "type": "http",
      "url": "https://mcp.paxaver.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.smartoire-paxaver-mcp]
url = "https://mcp.paxaver.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smartoire-paxaver-mcp": {
      "type": "remote",
      "url": "https://mcp.paxaver.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add smartoire-paxaver-mcp --url 'https://mcp.paxaver.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  smartoire-paxaver-mcp:
    url: "https://mcp.paxaver.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "smartoire-paxaver-mcp": {
      "Transport": "http",
      "Url": "https://mcp.paxaver.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add smartoire-paxaver-mcp -t streamable-http -u 'https://mcp.paxaver.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "smartoire-paxaver-mcp": {
      "type": "http",
      "url": "https://mcp.paxaver.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 95, +1)

- [security regression] Tool “create_menu_item” was removed
- [security regression] Tool “create_event” was removed
- [security regression] Tool “cancel_event” was removed
- [security regression] Tool “cancel_event_registration” was removed
- [security regression] Tool “cancel_order” was removed
- [security regression] Tool “cancel_volunteer_signup” was removed
- [security regression] Tool “create_draft_order” was removed
- [security regression] Tool “create_restaurant” was removed
- [security regression] Tool “delete_menu_item” was removed
- [security regression] Tool “discard_draft_order” was removed
- [security regression] Tool “finalize_order” was removed
- [security regression] Tool “get_menu” was removed
- [security regression] Tool “get_my_event_registrations” was removed
- [security regression] Tool “get_my_volunteer_signups” was removed
- [security regression] Tool “get_orders” was removed
- [security regression] Tool “get_upcoming_events” was removed
- [security regression] Tool “get_user_info” was removed
- [security regression] Tool “get_wallet_balance” was removed
- [security regression] Tool “list_menu_items” was removed
- [security regression] Tool “order_lunch” was removed
- [security regression] Tool “register_event” was removed
- [security regression] Tool “set_daily_menu” was removed
- [security regression] Tool “sign_up_to_volunteer” was removed
- [security regression] Tool “update_draft_order” was removed
- [security regression] Tool “update_event” was removed
- [security regression] Tool “update_menu_item” was removed
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “archive_restaurant_menu_item”, which the server declares destructive
- [security] New tool “cancel_my_event_registration”, which the server declares destructive
- [security] New tool “cancel_my_lunch_order”, which the server declares destructive
- [security] New tool “cancel_my_volunteer_signup”, which the server declares destructive
- [security] New tool “cancel_school_event”, which the server declares destructive
- [security] New tool “discard_lunch_order_draft”, which the server declares destructive
- [security] Tool “list_school_restaurants” rewrote its description, which is the text the model reads
- [functional regression] Prompt “order_lunch_helper” was removed
- [functional] New prompt “lunch_order_helper”
- [functional] Server version: 2.4.5 → 2.5.0
- [functional] New tool “create_lunch_order_draft”
- [functional] New tool “create_restaurant_menu_item”
- [functional] New tool “create_school_event”
- [functional] New tool “create_school_restaurant”
- [functional] New tool “get_lunch_menu”
- [functional] New tool “get_my_context”
- [functional] New tool “get_my_wallet_balance”
- [functional] New tool “list_my_event_registrations”
- [functional] New tool “list_my_lunch_orders”
- [functional] New tool “list_my_volunteer_signups”
- [functional] New tool “list_restaurant_menu_items”
- [functional] New tool “list_school_events”
- [functional] New tool “pay_lunch_order_draft”
- [functional] New tool “register_for_event”
- [functional] New tool “schedule_lunch_menu_item”
- [functional] New tool “sign_up_for_volunteer_shift”
- [functional] New tool “update_lunch_order_draft”
- [functional] New tool “update_restaurant_menu_item”
- [functional] New tool “update_school_event”

### 2026-09-19 (score 94, 0)

- [security] New tool “cancel_event_registration”, which the server declares destructive
- [security] New tool “cancel_volunteer_signup”, which the server declares destructive
- [security] New tool “discard_draft_order”, which the server declares destructive
- [security] Tool “create_draft_order” rewrote its description, which is the text the model reads
- [security] Tool “get_menu” rewrote its description, which is the text the model reads
- [security] Tool “get_orders” rewrote its description, which is the text the model reads
- [security] Tool “get_upcoming_events” rewrote its description, which is the text the model reads
- [security] Tool “get_user_info” rewrote its description, which is the text the model reads
- [security] Tool “get_wallet_balance” rewrote its description, which is the text the model reads
- [security] Tool “list_school_restaurants” rewrote its description, which is the text the model reads
- [security] Tool “order_lunch” rewrote its description, which is the text the model reads
- [security] Tool “register_event” rewrote its description, which is the text the model reads
- [security] Tool “sign_up_to_volunteer” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 111 → 125
- [functional] Server version: 2.4.3 → 2.4.5
- [functional] New tool “get_my_event_registrations”
- [functional] New tool “get_my_volunteer_signups”
- [functional] New tool “update_draft_order”
- [cosmetic] “cancel_event” reworded the description of “event_id”
- [cosmetic] “cancel_order” reworded the description of “order_id”
- [cosmetic] “create_draft_order” reworded the description of “school_slug”
- [cosmetic] “create_draft_order” reworded the description of “student_id”
- [cosmetic] “finalize_order” reworded the description of “order_id”
- [cosmetic] “get_menu” reworded the description of “date”
- [cosmetic] “get_menu” reworded the description of “month”
- [cosmetic] “get_orders” reworded the description of “menu_date”
- [cosmetic] “get_orders” reworded the description of “month”
- [cosmetic] “get_orders” reworded the description of “student_id”
- [cosmetic] “get_upcoming_events” reworded the description of “end_date”
- [cosmetic] “get_upcoming_events” reworded the description of “start_date”
- [cosmetic] “order_lunch” reworded the description of “student_id”
- [cosmetic] “register_event” reworded the description of “event_id”
- [cosmetic] “sign_up_to_volunteer” reworded the description of “shift_id”

### 2026-09-17 (score 94, +1)

- [security regression] A breaking change shipped without a version bump: still 2.4.3
- [security regression] Tool “get_daily_menu” was removed
- [security regression] Tool “get_daily_orders” was removed
- [security regression] Tool “get_monthly_orders” was removed
- [security regression] Tool “get_wallet_status” was removed
- [security regression] Tool “set_menu_item_price” was removed
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “list_menu_items” rewrote its description, which is the text the model reads
- [security] Tool “cancel_event” rewrote its description, which is the text the model reads
- [security] Tool “cancel_order” rewrote its description, which is the text the model reads
- [security] Tool “create_draft_order” rewrote its description, which is the text the model reads
- [security] Tool “create_event” rewrote its description, which is the text the model reads
- [security] Tool “create_menu_item” rewrote its description, which is the text the model reads
- [security] Tool “create_restaurant” rewrote its description, which is the text the model reads
- [security] Tool “delete_menu_item” rewrote its description, which is the text the model reads
- [security] Tool “finalize_order” rewrote its description, which is the text the model reads
- [security] Tool “get_orders” rewrote its description, which is the text the model reads
- [security] Tool “get_upcoming_events” rewrote its description, which is the text the model reads
- [security] Tool “get_user_info” rewrote its description, which is the text the model reads
- [security] Tool “get_wallet_balance” rewrote its description, which is the text the model reads
- [security] Tool “list_school_restaurants” rewrote its description, which is the text the model reads
- [security] Tool “order_lunch” rewrote its description, which is the text the model reads
- [security] Tool “register_event” rewrote its description, which is the text the model reads
- [security] Tool “set_daily_menu” rewrote its description, which is the text the model reads
- [security] Tool “sign_up_to_volunteer” rewrote its description, which is the text the model reads
- [security] Tool “update_event” rewrote its description, which is the text the model reads
- [security] Tool “update_menu_item” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 92% → 100%
- [functional] New tool “get_menu”
- [cosmetic] “get_orders” added an optional parameter “menu_date”
- [cosmetic] “get_orders” added an optional parameter “month”
- [cosmetic] “cancel_event” reworded the description of “event_id”
- [cosmetic] “create_draft_order” reworded the description of “items”
- [cosmetic] “create_draft_order” reworded the description of “menu_date”
- [cosmetic] “create_draft_order” reworded the description of “school_slug”
- [cosmetic] “create_draft_order” reworded the description of “student_id”
- [cosmetic] “create_menu_item” reworded the description of “restaurant_id”
- [cosmetic] “create_restaurant” reworded the description of “school_slug”
- [cosmetic] “delete_menu_item” reworded the description of “menu_item_id”
- [cosmetic] “delete_menu_item” reworded the description of “restaurant_id”
- [cosmetic] “get_orders” reworded the description of “student_id”
- [cosmetic] “list_menu_items” reworded the description of “restaurant_id”
- [cosmetic] “order_lunch” reworded the description of “menu_date”
- [cosmetic] “order_lunch” reworded the description of “menu_item_id”
- [cosmetic] “set_daily_menu” reworded the description of “menu_item_id”
- [cosmetic] “set_daily_menu” reworded the description of “restaurant_id”
- [cosmetic] “update_event” reworded the description of “event_id”
- [cosmetic] “update_event” reworded the description of “status”
- [cosmetic] “update_menu_item” reworded the description of “is_active”
- [cosmetic] “update_menu_item” reworded the description of “is_available”
- [cosmetic] “update_menu_item” reworded the description of “menu_item_id”
- [cosmetic] “update_menu_item” reworded the description of “restaurant_id”
- [cosmetic] Tool “cancel_event” changed its title: Cancel Event (Admin)
- [cosmetic] Tool “cancel_order” changed its title: Cancel Order
- [cosmetic] Tool “create_draft_order” changed its title: Create Draft Order
- [cosmetic] Tool “create_event” changed its title: Create Event (Admin)
- [cosmetic] Tool “create_menu_item” changed its title: Create Menu Item (Admin)
- [cosmetic] Tool “create_restaurant” changed its title: Create Restaurant (Admin)
- [cosmetic] Tool “delete_menu_item” changed its title: Delete Menu Item (Admin)
- [cosmetic] Tool “finalize_order” changed its title: Finalize Order
- [cosmetic] Tool “get_orders” changed its title: Get Orders
- [cosmetic] Tool “get_upcoming_events” changed its title: Get Upcoming Events
- [cosmetic] Tool “get_user_info” changed its title: Get User Info
- [cosmetic] Tool “get_wallet_balance” changed its title: Get Wallet Balance
- [cosmetic] Tool “list_menu_items” changed its title: List Menu Items (Admin)
- [cosmetic] Tool “list_school_restaurants” changed its title: List School Restaurants (Admin)
- [cosmetic] Tool “order_lunch” changed its title: Order Lunch
- [cosmetic] Tool “register_event” changed its title: Register for Event
- [cosmetic] Tool “set_daily_menu” changed its title: Set Daily Menu (Admin)
- [cosmetic] Tool “sign_up_to_volunteer” changed its title: Sign Up to Volunteer
- [cosmetic] Tool “update_event” changed its title: Update Event (Admin)
- [cosmetic] Tool “update_menu_item” changed its title: Update Menu Item (Admin)

### 2026-09-16 (score 93, +2)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

- [security] Tool “create_menu_item” rewrote its description, which is the text the model reads
- [security] Tool “create_restaurant” rewrote its description, which is the text the model reads
- [security] Tool “get_monthly_orders” rewrote its description, which is the text the model reads
- [security] Tool “get_orders” rewrote its description, which is the text the model reads
- [security] Tool “get_upcoming_events” rewrote its description, which is the text the model reads
- [security] Tool “list_menu_items” rewrote its description, which is the text the model reads
- [security] Tool “set_daily_menu” rewrote its description, which is the text the model reads
- [security] Tool “update_event” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 70 → 91
- [functional improvement] Tool coverage: 38% → 92%
- [functional] Schema quality: good → excellent
- [cosmetic] “create_event” reworded the description of “description”
- [cosmetic] “create_event” reworded the description of “ends_at”
- [cosmetic] “create_event” reworded the description of “event_date”
- [cosmetic] “create_event” reworded the description of “location”
- [cosmetic] “create_event” reworded the description of “max_capacity”
- [cosmetic] “create_event” reworded the description of “name”
- [cosmetic] “create_event” reworded the description of “starts_at”
- [cosmetic] “create_menu_item” reworded the description of “calories”
- [cosmetic] “create_menu_item” reworded the description of “cost_cents”
- [cosmetic] “create_menu_item” reworded the description of “description”
- [cosmetic] “create_menu_item” reworded the description of “ingredients”
- [cosmetic] “create_menu_item” reworded the description of “name”
- [cosmetic] “create_menu_item” reworded the description of “price_cents”
- [cosmetic] “create_menu_item” reworded the description of “restaurant_id”
- [cosmetic] “create_restaurant” reworded the description of “description”
- [cosmetic] “create_restaurant” reworded the description of “name”
- [cosmetic] “create_restaurant” reworded the description of “school_slug”
- [cosmetic] “create_restaurant” reworded the description of “tax_percent”
- [cosmetic] “list_menu_items” reworded the description of “restaurant_id”
- [cosmetic] “set_daily_menu” reworded the description of “available_qty”
- [cosmetic] “set_daily_menu” reworded the description of “menu_date”
- [cosmetic] “set_daily_menu” reworded the description of “menu_item_id”
- [cosmetic] “set_daily_menu” reworded the description of “restaurant_id”
- [cosmetic] “update_event” reworded the description of “description”
- [cosmetic] “update_event” reworded the description of “ends_at”

### 2026-09-15 (score 91, +1)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

### 2026-09-13 (score 90, +1)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

### 2026-09-12 (score 89, −1)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

### 2026-09-10 (score 90, +1)

We did not load change detail this far back for this component, so this day may have recorded more than is shown.

## MCP tools (26)

### `get_my_context` (~109 tokens)

Get My Context

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.

Output parameters:

- `firstName` (string|null): User first name
- `roles` (array): Role codes the user holds at the active school
- `schoolName` (string|null): Active school display name
- `schoolSlug` (string|null): Active school slug
- `students` (array): Students the user is guardian for (id, firstName, schoolSlug)

### `get_my_wallet_balance` (~112 tokens)

Get My Wallet Balance

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.

Output parameters:

- `balanceCents` (number|null): Spendable balance in cents
- `balanceFormatted` (string|null): Balance formatted with the currency symbol
- `currency` (string|null): ISO currency code (CAD, USD, or MXN)

### `list_my_lunch_orders` (~199 tokens)

List My Lunch Orders

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.

Input parameters:

- `menu_date` (string): Single day to query, YYYY-MM-DD; omit when using month
- `month` (string): Calendar month to query, YYYY-MM; omit when using menu_date
- `student_id` (string): Filter to a specific student (must be your own student, from get_my_context; admins may filter any student in the school)

Output parameters:

- `orders` (array): Orders matching the filters

### `get_lunch_menu` (~141 tokens)

Get Lunch Menu

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.

Input parameters:

- `date` (string): Single day to show, YYYY-MM-DD; omit when using month
- `month` (string): Calendar month to show, YYYY-MM; omit when using date. Today is used when neither is given

Output parameters:

- `date` (string): Date this menu applies to, YYYY-MM-DD
- `menuItems` (array): Items orderable on that date

### `create_lunch_order_draft` (~218 tokens)

Create Lunch Order Draft

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.

Input parameters:

- `items` (array, required): Line items to order; get IDs and prices from get_lunch_menu
- `menu_date` (string, required): Date the lunch is served, YYYY-MM-DD
- `school_slug` (string): School slug (from get_my_context); defaults to the active school
- `student_id` (string): 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

Output parameters:

- `id` (string): Draft order ID - pass to pay_lunch_order_draft
- `itemTotalCents` (integer): Item total in cents - charged on finalize
- `items` (array): Draft line items
- `menuDate` (string): Date the lunch is served, YYYY-MM-DD
- `schoolSlug` (string): School the order was placed at
- `status` (string): Order status (draft)
- `studentId` (string): Student the order is for

### `pay_lunch_order_draft` (~119 tokens)

Pay Lunch Order Draft

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). Not for new orders - use create_lunch_order_draft first. FINANCIAL - confirm the total before calling.

Input parameters:

- `order_id` (string, required): Draft order ID from create_lunch_order_draft - must still be in draft status; already-finalized orders are rejected
- `tip_cents` (integer): Tip in cents (donated to school PAC)

Output parameters:

- `balanceCents` (number|null): Wallet balance after the charge, in cents
- `id` (string): Order ID
- `itemTotalCents` (integer): Item total in cents
- `status` (string): Order status (finalized)
- `tipCents` (integer): PAC donation added, in cents
- `totalCents` (integer): Total charged to the wallet, in cents

### `update_lunch_order_draft` (~177 tokens)

Update Lunch Order Draft

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.

Input parameters:

- `items` (array): Replacement line items (menu_item_id from get_lunch_menu + quantity); replaces all existing items when provided
- `menu_date` (string): New date the lunch is served, YYYY-MM-DD
- `order_id` (string, required): Draft order ID from create_lunch_order_draft - must still be in draft status

Output parameters:

- `orderId` (string): Updated draft order ID
- `status` (string): Order status (draft)

### `discard_lunch_order_draft` (~111 tokens)

Discard Lunch Order Draft

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.

Input parameters:

- `order_id` (string, required): Draft order ID from create_lunch_order_draft - must still be in draft status

Output parameters:

- `orderId` (string): Discarded draft order ID
- `status` (string): Order status (discarded)

### `cancel_my_lunch_order` (~88 tokens)

Cancel My Lunch Order

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.

Input parameters:

- `order_id` (string, required): ID of a finalized order - from list_my_lunch_orders; the order must still be finalized and not yet have labels sent

Output parameters:

- `balanceCents` (number|null): Wallet balance after the refund, in cents
- `id` (string): Order ID
- `refundCents` (integer): Amount refunded to the wallet, in cents
- `status` (string): Order status (cancelled)

### `list_school_events` (~146 tokens)

List School Events

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.

Input parameters:

- `end_date` (string): Last day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events
- `start_date` (string): First day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events

Output parameters:

- `events` (array): Upcoming events matching the date range

### `create_school_event` (~202 tokens)

Create School Event (Admin)

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.

Input parameters:

- `description` (string): Optional event description
- `ends_at` (string): End time (e.g. 20:00)
- `event_date` (string, required): Event date, YYYY-MM-DD
- `location` (string): Event location (e.g. Gymnasium)
- `max_capacity` (integer): Maximum attendees/tickets; omit for unlimited
- `name` (string, required): Event name shown to parents
- `school_slug` (string): School slug (defaults to active school)
- `starts_at` (string): Start time (e.g. 18:30)
- `ticket_price_cents` (integer): Ticket price in cents (0 = free)

Output parameters:

- `eventDate` (string): Event date, YYYY-MM-DD
- `id` (string): Event ID
- `name` (string): Event name
- `status` (string): Event status (e.g. active)

### `update_school_event` (~241 tokens)

Update School Event (Admin)

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.

Input parameters:

- `description` (string): New event description shown to parents
- `ends_at` (string): End time (e.g. 20:00)
- `event_date` (string): Event date, YYYY-MM-DD
- `event_id` (string, required): Event ID - from list_school_events
- `location` (string): Event location (e.g. Gymnasium)
- `max_capacity` (integer): Maximum number of attendees/tickets
- `name` (string): New event name
- `starts_at` (string): Start time (e.g. 18:30)
- `status` (string): Event status - cancelled stops sales, completed closes the event
- `ticket_price_cents` (integer): Ticket price in cents; 0 for free events

Output parameters:

- `eventDate` (string): Event date, YYYY-MM-DD
- `id` (string): Event ID
- `name` (string): Event name
- `status` (string): Event status after the update

### `cancel_school_event` (~89 tokens)

Cancel School Event (Admin)

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.

Input parameters:

- `event_id` (string, required): Event ID - from list_school_events; cancelling is permanent and cannot be undone

Output parameters:

- `id` (string): Event ID
- `status` (string): Event status (cancelled)

### `register_for_event` (~143 tokens)

Register for Event

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.

Input parameters:

- `event_id` (string, required): Event ID from list_school_events - registration must still be open (check the closed flag)
- `quantity` (integer): Number of tickets

Output parameters:

- `eventId` (string): Event the user registered for
- `id` (string): Registration ID
- `quantity` (integer): Tickets issued
- `status` (string): Registration status

### `list_my_event_registrations` (~84 tokens)

List My Event Registrations

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.

Output parameters:

- `tickets` (array): Caller's event tickets at the active school

### `cancel_my_event_registration` (~101 tokens)

Cancel My Event Registration

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.

Input parameters:

- `ticket_id` (string, required): Ticket ID from list_my_event_registrations - must belong to the caller and still be cancellable

Output parameters:

- `id` (string): Cancelled ticket ID
- `status` (string): Ticket status (cancelled)

### `list_my_volunteer_signups` (~65 tokens)

List My Volunteer Signups

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.

Output parameters:

- `signups` (array): Caller's active volunteer signups

### `cancel_my_volunteer_signup` (~94 tokens)

Cancel My Volunteer Signup

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.

Input parameters:

- `signup_id` (string, required): Signup ID from list_my_volunteer_signups - must belong to the caller and still be active

Output parameters:

- `id` (string): Cancelled signup ID
- `status` (string): Signup status (cancelled)

### `sign_up_for_volunteer_shift` (~111 tokens)

Sign Up for Volunteer Shift

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.

Input parameters:

- `shift_id` (string, required): Volunteer shift ID - from the event's volunteer shifts (list_school_events)

Output parameters:

- `id` (string): Signup ID
- `shiftId` (string): Volunteer shift signed up for
- `status` (string): Signup status

### `list_school_restaurants` (~102 tokens)

List School Restaurants (Admin)

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.

Input parameters:

- `school_slug` (string): School slug (defaults to active school)

Output parameters:

- `restaurants` (array): Active restaurants attached to the school (inactive ones are excluded)

### `create_school_restaurant` (~125 tokens)

Create School Restaurant (Admin)

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.

Input parameters:

- `description` (string): Optional restaurant description
- `name` (string, required): Restaurant display name
- `school_slug` (string): School slug - defaults to the active school
- `tax_percent` (number): Sales tax percentage applied to orders (e.g. 5 for 5%)

Output parameters:

- `id` (string): Restaurant ID
- `isActive` (boolean): Whether the restaurant is active
- `name` (string): Restaurant name

### `list_restaurant_menu_items` (~111 tokens)

List Restaurant Menu Items (Admin)

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.

Input parameters:

- `restaurant_id` (string, required): Restaurant ID - from list_school_restaurants

Output parameters:

- `items` (array): Full catalog items, including inactive and unavailable

### `create_restaurant_menu_item` (~187 tokens)

Create Restaurant Menu Item (Admin)

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.

Input parameters:

- `calories` (integer): Calorie count
- `cost_cents` (integer): Kitchen cost in cents (internal margin tracking)
- `description` (string): Optional item description
- `ingredients` (array): Ingredient list
- `name` (string, required): Item display name shown to parents
- `price_cents` (integer): Sale price in cents (e.g. 550 = $5.50)
- `restaurant_id` (string, required): Restaurant ID - from list_school_restaurants

Output parameters:

- `id` (string): Menu item ID
- `isActive` (boolean): Whether the item is on the restaurant menu
- `name` (string): Item name
- `priceCents` (integer): Sale price in cents

### `update_restaurant_menu_item` (~280 tokens)

Update Restaurant Menu Item (Admin)

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.

Input parameters:

- `calories` (integer): Calorie count
- `cost_cents` (integer): Kitchen cost in cents (internal margin tracking)
- `description` (string): New item description shown to parents
- `ingredients` (array): Ingredient list
- `is_active` (boolean): Whether the item stays on the restaurant menu - set false to retire it
- `menu_item_id` (string, required): Menu item ID - from list_restaurant_menu_items
- `name` (string): New display name for the item
- `price_cents` (integer): Sale price in cents (e.g. 550 = $5.50)
- `restaurant_id` (string, required): Restaurant ID - from list_school_restaurants

Output parameters:

- `id` (string): Menu item ID
- `isActive` (boolean): Whether the item is on the restaurant menu
- `isAvailable` (boolean): Whether the item can currently be ordered
- `name` (string): Item name
- `priceCents` (integer): Sale price in cents

### `archive_restaurant_menu_item` (~138 tokens)

Archive Restaurant Menu Item (Admin)

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.

Input parameters:

- `menu_item_id` (string, required): Menu item ID - from list_restaurant_menu_items
- `restaurant_id` (string, required): Restaurant ID - from list_school_restaurants

Output parameters:

- `deleted` (boolean): Whether the item was soft-deleted
- `id` (string): Menu item ID

### `schedule_lunch_menu_item` (~162 tokens)

Schedule Lunch Menu Item (Admin)

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.

Input parameters:

- `available_qty` (integer): Maximum portions for the day; omit for unlimited
- `menu_date` (string, required): Date the item is orderable, YYYY-MM-DD
- `menu_item_id` (string, required): Menu item ID - from list_restaurant_menu_items
- `restaurant_id` (string, required): Restaurant ID - from list_school_restaurants

Output parameters:

- `availableQty` (integer|null): Portion cap for the day; null means unlimited
- `id` (string): Daily-menu entry ID
- `menuDate` (string): Date the item is orderable, YYYY-MM-DD
- `menuItemId` (string): Menu item scheduled

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp#diagnostics

## Score history

- 2026-09-20: 95
- 2026-09-19: 94
- 2026-09-18: 94
- 2026-09-17: 94
- 2026-09-16: 93
- 2026-09-15: 91
- 2026-09-14: 90
- 2026-09-13: 90
- 2026-09-12: 89
- 2026-09-11: 90
- 2026-09-10: 90
- 2026-09-09: 89
- 2026-09-08: 87
- 2026-09-07: 87
- 2026-09-06: 87
- 2026-09-05: 71
- 2026-09-04: 70
- 2026-09-03: 70
- 2026-09-02: 69
- 2026-09-01: 69
- 2026-08-31: 68
- 2026-08-30: 68
- 2026-08-29: 68
- 2026-08-28: 67
- 2026-08-27: 63
- 2026-08-26: 63
- 2026-08-25: 65
- 2026-08-24: 64

## Common questions

### What is the io.github.Smartoire/paxaver-mcp server?

io.github.Smartoire/paxaver-mcp is listed in the public MCP registry as io.github.Smartoire/paxaver-mcp. MCP adapter for the Paxaver school community platform. Streamable HTTP, OAuth 2.1, capability auth. This page covers its hosted endpoint (https://mcp.paxaver.com/mcp).

### Is the io.github.Smartoire/paxaver-mcp server safe to use?

io.github.Smartoire/paxaver-mcp scores 95 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.Smartoire/paxaver-mcp server expose?

io.github.Smartoire/paxaver-mcp exposes 26 tools: get_my_context, get_my_wallet_balance, list_my_lunch_orders, get_lunch_menu, create_lunch_order_draft, and 21 more. Their descriptions and schemas cost roughly 3,655 tokens of context every time the server is loaded.

### Does the io.github.Smartoire/paxaver-mcp server require authentication?

Yes. io.github.Smartoire/paxaver-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the io.github.Smartoire/paxaver-mcp server still maintained?

io.github.Smartoire/paxaver-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.paxaver.com/mcp
- Repository: https://github.com/Smartoire/paxaver-mcp
- Changelog RSS feed: https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp.json
- HTML version of this page: https://verifymcp.io/servers/smartoire-paxaver-mcp/mcp
