Agents arranging people’s time
SchCP is a protocol that lets a person’s AI agent arrange time with a host: a business that sells time (an auto bay, a barber’s chair, a dental operatory), or another person whose own agent keeps their calendar. The agent finds what’s open, places a short hold, and books under a mandate: a limit the person signed, which the host checks on every request.
SchCP never moves money. A price, where there is one, is a term the host states and the person approves; it is paid to the host directly. A playdate has no price at all, and no agreed end.
Everything here runs on one machine: four fictional businesses and three people on simulated domains, a booking platform, a personal-calendar service, key apps and agents. The agent calls are real signed HTTP requests through the SDK.
The businesses
Maple Street Auto
Independent auto shop. Two bays, two technicians, a detailer on Tuesdays and Thursdays.
Fades on Queen
Barbershop with no website of its own. Pick your barber: Marcus or Priya.
Harbourview Dental
Dental clinic in Vancouver. Its bookings run on the Chairly platform.
Rosie's Nails
Nail salon run from a shared calendar. Two stations. Rosie approves every booking.
The people · calendars kept by their own agents on Daybook
Noor Haddad
A parent. She signed a rule so her agent says yes to playdates and coffee with her contacts: nothing priced, and a playdate has a start but no agreed end.
Ellis Moreau
Another parent, on Noor’s and Priya’s contact lists (and they on Ellis’s). Ellis’s agent asks before accepting.
Priya Shah
A third parent. Her agent says yes to weekend playdates by her rule, and names the rule when it does.
Try this
- Open Maple’s dashboard in one tab and the playground in another.
- Run Book my oil change Thursday ~1 PM. Watch the hold appear in amber, then turn green when the agent confirms.
- Book a slot yourself on Maple’s public site. Humans and agents book from one calendar; neither can double-book the other.
- Run Calendar host needs approval, then approve the orange booking on Rosie’s dashboard. The playground is waiting for the signed webhook.
- Run Cancel: always free: the agent books, then cancels. The host signs a new receipt and frees the time, waitlist first; nothing is charged or recorded.
- Open Ellis’s calendar and run Playdate: Noor’s agent finds a time both parents are free, and Ellis’s agent asks Ellis.
- Open Priya’s calendar and run Playdate for three families: one contract all three accept by the same hash. Priya’s agent says yes by her rule; Ellis can say yes, say no, or suggest another park.
What you are looking at
- Discovery
- Each host publishes
/.well-known/scheduling.json. Agents only trust an endpoint the host’s own domain, or a platform both sides name, vouches for. - Signed requests
- Every agent request is signed with the agent’s Ed25519 key (RFC 9421).
- Mandates
- A JWS signed by the person’s key app: which services, when, and the most they’ll agree to a stated price. Bound to one agent key.
- No money
- Nothing is charged through SchCP: no deposits, no fees taken, and cancelling is always free. Prices are disclosed terms, paid to the host directly.
- Holds
- Short-lived reservations so a slot survives “let me ask my human”. They expire on their own.
- Receipts
- Every booking change returns a receipt signed by the host key from discovery.