# io.github.chrischall/schoolpass-mcp (npm · schoolpass-mcp)

SchoolPass for Claude — students, arrival/dismissal calendar, pickup changes, and school info

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

## Components

- npm · `schoolpass-mcp`: 91/100 (this document), [markdown](https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp.md), [page](https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp)

## Channel facts

- Registry: `npm`
- Package: `schoolpass-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-21.

- **Supply Chain Security**: 93/100
  - No malware found by supply-chain analysis.
  - Known CVEs were checked across the 4 of 5 dependencies we could resolve, so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Dependency health was assessed across the 4 of 5 dependencies we could resolve, so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to chrischall/schoolpass-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1622 tokens (~147/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 93/100
  - Stability observed for 28 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.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 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.chrischall/schoolpass-mcp server?

io.github.chrischall/schoolpass-mcp runs locally as an npm package, launched with npx -y schoolpass-mcp. 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 chrischall-schoolpass-mcp -- npx -y schoolpass-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "chrischall-schoolpass-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "schoolpass-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "chrischall-schoolpass-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "schoolpass-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add chrischall-schoolpass-mcp -- npx -y schoolpass-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "chrischall-schoolpass-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "schoolpass-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add chrischall-schoolpass-mcp --command npx --arg -y --arg schoolpass-mcp
```

### Hermes

```yaml
mcp_servers:
  chrischall-schoolpass-mcp:
    command: "npx"
    args: ["-y", "schoolpass-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "chrischall-schoolpass-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "schoolpass-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add chrischall-schoolpass-mcp -t stdio -c npx -a -y schoolpass-mcp
```

### Other

```json
{
  "mcpServers": {
    "chrischall-schoolpass-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "schoolpass-mcp"
      ]
    }
  }
}
```

## 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-21 (score 91, −2)

- [security regression] Stability: 0.90 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Known CVEs: pass → partial
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Dependency health: 1.00 → partial
- [functional] Package version: 1.0.0 → 1.0.1

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

- [security regression] Stability: 0.87 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: 0.86 → 1.00
- [functional] First check of Schema quality: unverified
- [functional] MCP protocol: Implements a current MCP spec version (2026-07-28).
- [functional] Package version: 0.4.2 → 1.0.0

### 2026-09-18 (score 92, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

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

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

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

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 89, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-09-10 (score 73, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.4.1 → 0.4.2

### 2026-09-07 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (11)

### `schoolpass_healthcheck` (~59 tokens)

Check SchoolPass connectivity and authentication. Reports whether the regional API host is reachable (an unauthenticated version probe) and, separately, whether the configured credentials log in — so a network problem is distinguishable from a bad password or school code.

### `schoolpass_whoami` (~42 tokens)

Return the parent account this server is signed in as: member id, user type, and name. Runs the login bootstrap if it has not run yet.

### `schoolpass_list_students` (~126 tokens)

List the students linked to the parent account: name, grade, home dismissal location, aftercare flag, and per-student details. Defaults to the signed-in parent.

Input parameters:

- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_get_profile` (~110 tokens)

Get the parent account profile (contact details and account settings) for the signed-in parent.

Input parameters:

- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_list_drivers` (~113 tokens)

List the authorized pickup drivers registered on the parent account, optionally including the carpools each belongs to.

Input parameters:

- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_get_calendar` (~190 tokens)

Get a student’s arrival & dismissal calendar over a date range — the per-day default and any changes. Requires a student id (from schoolpass_list_students). Defaults to today through 14 days out.

Input parameters:

- `end_date` (string): End of range (YYYY-MM-DD). Defaults to 14 days out.
- `start_date` (string): Start of range (YYYY-MM-DD). Defaults to today.
- `student_id` (integer, required): Student id, from schoolpass_list_students.
- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_list_pickup_changes` (~163 tokens)

List pickup / dismissal changes for a student on a given date (defaults to today) — early pickups, late arrivals, carpool moves, and the like. Requires a student id.

Input parameters:

- `date` (string): Date (YYYY-MM-DD). Defaults to today.
- `student_id` (integer, required): Student id, from schoolpass_list_students.
- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_list_dismissal_locations` (~126 tokens)

List the school’s dismissal locations (car line, bus, aftercare, walkers, etc.) with their ids — the vocabulary a dismissal change refers to.

Input parameters:

- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_get_school_info` (~115 tokens)

Get basic school info and per-school configuration (features enabled, dismissal windows, etc.) for the configured school.

Input parameters:

- `view` (string): Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

### `schoolpass_submit_dismissal_change` (~388 tokens)

Submit a dismissal/arrival change for a student on a single date — send them to a different dismissal location or carpool, mark early dismissal / late arrival / absent, etc. CONFIRM-GATED: without confirm:true it makes no change and returns a dry-run preview of the exact request. With confirm:true it submits and then re-reads the calendar to show the change landed. Get student_id from schoolpass_list_students and move_to_id from schoolpass_list_dismissal_locations (a dismissal location id) or the student calendar (a carpool moveToId).

Input parameters:

- `ad_type` (string): Which side of the day: arrival, departure (default), or both.
- `bus_stop_id` (integer): Bus stop id for a bus move. The app sends this field on every submit, but no bus change has been captured live, so its effect is UNVERIFIED — see docs/SCHOOLPASS-API.md.
- `change_type` (string, required): The kind of change.
- `confirm` (boolean): Must be true to actually submit. Without it, returns a dry-run preview only.
- `date` (string, required): The date to change (YYYY-MM-DD).
- `move_to_id` (integer): Target dismissal location id (schoolpass_list_dismissal_locations) or carpool id. Required for carpool and bus moves (enforced); supply it for activity/location moves too.
- `notes` (string): Optional note attached to the change.
- `pickup_dropoff_person` (string): Optional name of the person picking up / dropping off.
- `student_id` (integer, required): Student id (schoolpass_list_students).
- `time_of_day` (string): Optional time of day for the change (e.g. "14:30").
- `will_return` (boolean): Whether the student will return the same day (for early dismissal).

### `schoolpass_cancel_dismissal_change` (~190 tokens)

Cancel a previously-submitted dismissal/arrival change for a student on a date, returning that date to its default. CONFIRM-GATED: without confirm:true it looks up the change and returns a preview of what would be cancelled, making no change. With confirm:true it deletes the change and re-reads the calendar to confirm the day is back to default.

Input parameters:

- `change_series_id` (integer): Which change to cancel, when the date carries more than one. Get it from the student calendar (changeSeriesId) or from this tool's dry-run. Optional when the date has exactly one cancellable change.
- `confirm` (boolean): Must be true to actually cancel. Without it, returns a preview only.
- `date` (string, required): The date whose change should be cancelled (YYYY-MM-DD).
- `student_id` (integer, required): Student id (schoolpass_list_students).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp#diagnostics

## Score history

- 2026-09-21: 91
- 2026-09-20: 93
- 2026-09-19: 92
- 2026-09-18: 92
- 2026-09-17: 91
- 2026-09-16: 91
- 2026-09-15: 90
- 2026-09-14: 90
- 2026-09-13: 89
- 2026-09-12: 89
- 2026-09-11: 73
- 2026-09-10: 73
- 2026-09-09: 87
- 2026-09-08: 87
- 2026-09-07: 87
- 2026-09-06: 86
- 2026-09-05: 75
- 2026-09-04: 85
- 2026-09-03: 86
- 2026-09-02: 85
- 2026-09-01: 85
- 2026-08-31: 84
- 2026-08-30: 84
- 2026-08-29: 83
- 2026-08-28: 83
- 2026-08-27: 83
- 2026-08-26: 82
- 2026-08-25: 80
- 2026-08-24: 80

## Common questions

### What is the io.github.chrischall/schoolpass-mcp server?

io.github.chrischall/schoolpass-mcp is listed in the public MCP registry as io.github.chrischall/schoolpass-mcp. SchoolPass for Claude, students, arrival/dismissal calendar, pickup changes, and school info. This page covers its npm package (schoolpass-mcp).

### Is the io.github.chrischall/schoolpass-mcp server safe to use?

io.github.chrischall/schoolpass-mcp scores 91 out of 100 on VerifyMCP. It declares no install or post-install scripts. Its build provenance is signed and verified. 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.chrischall/schoolpass-mcp server expose?

io.github.chrischall/schoolpass-mcp exposes 11 tools: schoolpass_healthcheck, schoolpass_whoami, schoolpass_list_students, schoolpass_get_profile, schoolpass_list_drivers, and 6 more. Their descriptions and schemas cost roughly 1,622 tokens of context every time the server is loaded.

### Is the io.github.chrischall/schoolpass-mcp server still maintained?

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

### What licence is the io.github.chrischall/schoolpass-mcp server under?

io.github.chrischall/schoolpass-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/schoolpass-mcp
- Socket report: https://socket.dev/npm/package/schoolpass-mcp
- Repository: https://github.com/chrischall/schoolpass-mcp
- Changelog RSS feed: https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp.json
- HTML version of this page: https://verifymcp.io/servers/chrischall-schoolpass-mcp/schoolpass-mcp
