agentCLAWHUBUnverified

pickuppatrol-mcp

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. Skill: pickuppatrol-mcp Owner: chrischall Summary: 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. Tags: latest:1.2.1 Version history: v1.2.1 | 2026-10-09T23:27:54.931Z | auto - Removed the file: skill-card.md - No changes to core API or functional documentation. - Simplified fil

OpenClaw

Rank

62

Safety

84

Downloads

1.1k

Updated

Oct 11, 2026

Version

1.2.1

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 11, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 11, 2026
Adoption signal
1.1K downloadsadoption · observed Oct 11, 2026
Latest release
1.2.1release · observed Oct 9, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:pickuppatrol-mcp
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-pickuppatrol-mcp/snapshot"

Documentation

CLAWHUB

144,101 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: pickuppatrol-api
description: "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."
---

# PickUp Patrol from a shell

`app.pickuppatrol.net` is a ServiceStack JSON API behind an Ionic/Vue SPA. It is
reachable **server-side with plain `curl`** — no bot wall, no captcha, no
browser bridge. Use this when you want PickUp Patrol data in a script or on a
machine without the `pickuppatrol-mcp` server.

Full captured shapes: `references/api.md`.

## Sign in once per shell

```bash
export PUP_USER='[email protected]'
read -rs PUP_PASS && export PUP_PASS      # never put the password in a command line
export PUP=https://app.pickuppatrol.net/api/json/reply

pup_login() {
  local jar; jar=$(mktemp -t pupjar)
  curl -sS -c "$jar" -X POST "$PUP/Authenticate" \
    -H 'Content-Type: application/json' \
    -d "$(jq -nc --arg u "$PUP_USER" --arg p "$PUP_PASS" \
          '{provider:"credentials",UserName:$u,Password:$p,RememberMe:true}')" \
    -o /tmp/pup_auth.json -w '%{http_code}' >/tmp/pup_code
  [ "$(cat /tmp/pup_code)" = 200 ] || { jq -r '.ResponseStatus.Message' /tmp/pup_auth.json >&2; return 1; }
  export PUP_JAR="$jar"
  # This deployment returns cookies only — BearerToken comes back null. The
  # JWT path exists server-side, so keep a token if one ever appears.
  PUP_TOKEN=$(jq -r '.BearerToken // empty' /tmp/pup_auth.json); export PUP_TOKEN
}

# Every call goes through this: it sends the session cookies, and the bearer
# token as well when the deployment issued one.
pup() {
  local method=$1 dto=$2; shift 2
  local -a auth=(-b "$PUP_JAR")
  [ -n "$PUP_TOKEN" ] && auth+=(-H "Authorization: Bearer $PUP_TOKEN")
  curl -sS -X "$method" "$PUP/$dto" -H 'Content-Type: application/json' "${auth[@]}" "$@"
}
```

**Never re-run a rejected login.** PickUp Patrol answers bad credentials with
`ResponseStatus.ErrorCode` starting `LOGIN-ERROR`, counts the attempt against
the account, and a lockout clears only through their support desk. One failure
= stop and fix the credentials.

## Reads

```bash
pup GET GetSession | jq '{name:.DisplayName, email:.Email, kids:[.Children[].StudentId]}'
pup GET GetChildren | jq -r '.[] | "\(.StudentId)  \(.FirstName) — \(.SchoolName)"'

# Weekly default plan for one student. DayId is 1-based, SUNDAY = 1.
pup GET GetChildren | jq '.[] | select(.StudentId==1050046) | .DefaultPlans
  | sort_by(.DayId) | map({day:.WeekDayName, option:.TransportationName, note:.Note})'

# The dismissal options a school offers, with the rules each imposes.
pup GET "GetTransportations?SchoolId=1703" | jq -r '.[] | select(.IsActive)
  | "\(.TransportationId)\t\(.Name)\tnote=\(.IsNoteRequired)\tcar=\(.UseCarNumbers)\tearly=\(.IsEarlyDismissal)"'

# GetPlanEdit returns the date's OVERRIDE, not the effective plan: a date with
# no specific plan reads back null even when a weekday default exists.
pup GET "GetPlanEdit?P

_meta.json

{
  "ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
  "slug": "pickuppatrol-mcp",
  "version": "1.2.1",
  "publishedAt": 1791588474931
}

references/api.md

# PickUp Patrol API reference

Every shape here was read off the shipped SPA's own request DTO classes or
observed on a live signed-in session (2026-08-16). No credential, cookie or
token value is recorded.

- Base: `https://app.pickuppatrol.net/api/json/reply/<DtoName>`
- GET args on the query string; POST/PUT/PATCH args in a JSON body
- Auth: session cookies from `Authenticate` (`ss-id`, `ss-pid`, `ss-opt`). This
  deployment returns `BearerToken: null`; send `Authorization: Bearer …` too if
  one ever appears
- Errors: ServiceStack `{"ResponseStatus":{"ErrorCode","Message","Errors":[…]}}`;
  an unauthenticated call to any authorised DTO is a bare `401`

Assumes the `pup` / `pup_login` shell functions from `SKILL.md`.

## Authentication

```bash
curl -sS -c jar -X POST "$PUP/Authenticate" -H 'Content-Type: application/json' \
  -d '{"provider":"credentials","UserName":"…","Password":"…","RememberMe":true}'
```

Response: `{UserId, SessionId, UserName, DisplayName, BearerToken, RefreshToken,
Roles, Permissions, ResponseStatus}` — `BearerToken` and `RefreshToken` come
back null here; the session is the cookies.

Two-factor accounts (`User.OtpTypeId` set) need `POST /CreateOtp {OtpTypeId}`
then `PUT /VerifyOtp {Otp, RememberMe}`. Token refresh is
`POST /GetAccessToken {refreshToken}` or `GET /RequestNewtoken?OldToken=…`.

## Read DTOs

| DTO | Args |
|---|---|
| `GetSession` | — |
| `GetSessionInfo` | — |
| `GetChildren` | — |
| `GetStudent` | `StudentId`, `MergeTimeWithNote?` |
| `GetDefaultPlansReviewNeeded` | — |
| `GetParentPlans` | `StartDate`, `EndDate` |
| `GetPlanEdit` | `PlanDate`, `StudentId` |
| `GetBoldedDates` | `StartDate`, `EndDate` (dates differing from the default) |
| `GetInvalidPlanDates` | `SchoolId` (non-school days) |
| `GetTransportations` | `SchoolId` |
| `GetCarNumbers` | `SchoolId` |
| `GetSchool` | `SchoolId` |
| `GetSchoolNotifyTimes` | `SchoolId` |
| `GetSchoolSettings` | `SchoolId` |
| `GetMiddayPlan` | `StudentId`, `PlanDate`, `TypeId?` |
| `GetParentHealthScreenAudits` | `ScreenDate` |
| `GetTermsOfUse` | — |

### Student

```
StudentId SchoolId SchoolName FirstName LastName IsActive SASId TeacherId
AllowPlans CreateDate CreatedBy ModifiedDate ModifiedBy DefaultsModifiedDate
DefaultPlanModifiedBy DefaultsReviewedDate DefaultsReviewedBy DefaultPlans
SafetyFlag DefaultCarNumber LimitedIds
```

`DefaultPlans[]`:

```json
{"StudentId":1050046,"DayId":2,"TransportationId":41246,"Note":"Chris Hall",
 "TransportationName":"PickUp","WeekDayName":"Monday","EarlyDismissalTime":null,
 "CarNumber":null,"UseCarNumbers":false}
```

`DayId` is 1-based with **Sunday = 1** — verified from a live record where
`DayId: 2` carried `WeekDayName: "Monday"`.

### Transportation

```
TransportationId SchoolId Name NoteHint IsNoteRequired UseCarNumbers
IsNotePrivate IsActive Sequence IsEarlyDismissal IsLimited CutoffTime
CutoffTime{Sunday…Saturday} AllowParentCheck
```

### GetPlanEdit

```
PlanDate StudentId FirstName LastName SchoolId Tran

skill-card.md

## Description:

Provides shell guidance for reading and changing children's school dismissal plans on PickUp Patrol, including weekly defaults, date-specific changes, and school cutoff times.

This skill is ready for commercial/non-commercial use.

## Publisher:

[chrischall](https://clawhub.ai/user/chrischall)

### License/Terms of Use:

MIT-0

## Use Case:

Parents or guardians with a PickUp Patrol account can use this guide to inspect school dismissal options and student plans, then prepare and verify changes from a shell.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: Exposing account credentials, session cookies, or student data stored in temporary files.

Mitigation: Use your own account; protect and delete temporary authentication, cookie, and student files after use.

Risk: Incorrect write commands can change live student dismissal plans or overwrite student fields.

Mitigation: Review every PUT/PATCH command before running it, back up full student JSON before whole-record updates, and re-read plans to verify changes.

## Reference(s):

- [PickUp Patrol API reference](references/api.md)

## Skill Output:

**Output Type(s):** [Shell commands, Guidance]

**Output Format:** [Markdown with shell and JSON examples]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [Guidance for authenticated reads, plan updates, and verification of changes.]

## Skill Version(s):

1.2.1 (source: ClawHub release metadata)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 2d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/chrischall/skills/pickuppatrol-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/skills/pickuppatrol-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T10:19:11.996Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-pickuppatrol-mcp/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-pickuppatrol-mcp/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-11T10:19:11.996Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.1K downloads",
      "href": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T10:19:11.996Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.2.1",
      "href": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:27:54.931Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-pickuppatrol-mcp/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-pickuppatrol-mcp/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.2.1",
      "description": "- Removed the file: skill-card.md - No changes to core API or functional documentation. - Simplified file structure by eliminating redundant or unnecessary documentation.",
      "href": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceUrl": "https://clawhub.ai/chrischall/pickuppatrol-mcp",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:27:54.931Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 11, 2026.

Sponsored

Ads related to pickuppatrol-mcp and adjacent AI workflows.