文档

schoolpass-curl

试用

Read a SchoolPass parent account directly with curl against the regional SchoolPass REST API (a busapi shard on school-pass.net), without running the MCP server. Use for a one-off shell read of your students, arrival/dismissal calendar, pending pickup changes, drivers, dismissal locations, or school info — "check SchoolPass from the terminal", "list my kids in SchoolPass", "any dismissal changes today". Requires SCHOOLPASS_EMAIL / SCHOOLPASS_PASSWORD / SCHOOLPASS_SCHOOL_CODE.

它能做什么

Read a SchoolPass parent account directly with curl against the regional SchoolPass REST API (a busapi shard on school-pass.net), without running the MCP server. Use for a one-off shell read of your students, arrival/dismissal calendar, pending pickup changes, drivers, dismissal locations, or school info — "check SchoolPass from the terminal", "list my kids in SchoolPass", "any dismissal changes today". Requires SCHOOLPASS_EMAIL / SCHOOLPASS_PASSWORD / SCHOOLPASS_SCHOOL_CODE.

技能文档

SchoolPass API via curl

The SchoolPass JSON API is reachable server-side — no browser, no bridge, no extension. This skill talks to it directly with curl.

Prefer the schoolpass-mcp server for anything conversational or repeated; use this for one-off shell work, scripts, or when the server isn't running.

Ready-to-run request bodies and jq recipes: references/requests.md. Full shape reference: ../../docs/SCHOOLPASS-API.md.

Setup

export SCHOOLPASS_EMAIL='you@example.com'
export SCHOOLPASS_PASSWORD='…'
export SCHOOLPASS_SCHOOL_CODE=1183          # your school id (the AppCode)
export SCHOOLPASS_API_HOST=busapi-east16-ss.school-pass.net   # your region's shard

Find your school id and region host by signing into your school's .school-pass.net portal, opening the new SchoolPass app, and reading appCode (the id) and apiUrl (the host) from its localStorage.

Two rules

  1. Every request needs an AppCode: header. It selects your school. Omit it (or send the wrong one) and you get 401. It is not a secret. references/requests.md's sp_curl helper adds it for you.
  2. HTTP status codes are real. 401 = the token or AppCode was rejected, 403 = a parent account cannot reach that route (it is admin-only), 2xx = success. Branch on the HTTP code.

Auth: email/password → bearer

  1. POST Auth/users with {schoolCode,email,password,authType:"Credentials"} → the identities your email owns. Take the one whose userType is 3 (Parent).
  2. POST Auth/token with {schoolCode,userId,userType,password,authType:"Credentials"}{ access_token, refresh_token, … }. Send access_token as Authorization: Bearer … on every subsequent call.

references/requests.md's sp_login does both and caches the token.

Never retry a rejected login. SchoolPass fronts its login with reCAPTCHA; repeated wrong passwords can get the account challenged and break shell login. Fix the credential and try once.

Reads

All are GET with the AppCode header + Authorization: Bearer. Most parent endpoints take an optional memberId (your own parent id, from Auth/users).

WantEndpoint
your studentsGET parent/getstudents
parent profileGET parent/profile
authorized driversGET parent/parentdrivers?includeCarpool=true
student calendarGET Student/StudentCalendar?schoolCode=&studentId=&startDate=&endDate=
pickup changesGET PickupChange/GetChanges?studentId=&date=
dismissal locationsGET dismissal/getDismissalLocations
school infoGET SchoolInfo/GetBasicSchoolInfo?schoolCode=
reachability (no auth)GET version?schoolCode=

Scope

Parent tokens are parent-scoped: the admin surface (visitor management, carline operations, reports, bus routing) returns 403. This is expected, not a bug.

Never echo the password or the bearer token into a shared transcript.

相关技能

This skill should be used when the user asks about their child's school arrival/dismissal through a SchoolPass parent account. Triggers on phrases like "check SchoolPass", "when is my kid dismissed", "what's my dismissal default", "list my students in SchoolPass", "who are my pickup drivers", "any pickup changes today", "school dismissal locations", or any request to read a SchoolPass parent account.

Read and change your children's school dismissal plans on PickUp Patrol (app.pickuppatrol.net) from a shell with curl — students, weekly defaults, day-by-day changes, school cutoff times.

1 次安装

Access AlphaPortal (AlphaRoute) school-bus data — students, stops, live bus GPS location, arrival notifications — from a shell with curl instead of running the alphaportal-mcp server. Capture the signed-in web app's refresh token ONCE (a paste-in-console one-liner, or the fpx browser bridge), then mint access tokens and curl the REST API directly. Use when you want AlphaPortal data without the MCP, in a script, or on a machine where the MCP isn't installed.

Query Korean school information, meals, and timetables from the official NEIS OpenAPI. Use when the user asks for school lunch menus, school timetables, or s...

19 次安装

Query an Infinite Campus (Campus Parent portal) district directly with curl instead of running the infinitecampus-mcp server — log in with a real username/password, capture the session cookie + XSRF token, and curl grades, attendance, assignments, schedule, messages, documents, and fees. Use when you want IC data without the MCP, in a script, or on a machine where the MCP isn't installed. Infinite Campus is per-district: the base URL and district app name are configurable, not hardcoded.

1 次安装

Read and manage a My Hot Lunchbox school-lunch account from a shell with curl — sign in, list students, read the lunch calendar and cart, check orders, deliveries and payments. Use when you want My Hot Lunchbox data without running the MCP server, in a script, or on a machine where the MCP is not installed.