For agents & LLMs

Registration infrastructure
your agent can drive.

Create a class with a single call and get back a hosted registration page, a drop-in embed, and payment-readiness. Sorted runs the registration hot path and collects student payments — your agent just publishes the link.

This is Sorted's primary product. Virtual waiting rooms are a separate Queue as a Service option for merchants that need immediate surge protection but are not ready to migrate their registration flow.

Claude Code plugin claude plugin install josefrichter/sorted-claude-plugin

How it works

One call in.
Three things back.

Your agent never touches the registration hot path or handles money. It publishes what Sorted returns.

public_url

A hosted registration page

embed_code

A drop-in iframe for any site

payment

Whether payouts are ready, with an onboarding link if not

agent → sorted POST /mcp
tools/call create_event {
"title": "Saturday pottery workshop",
"datetime": "2026-10-24T10:00:00Z",
"capacity": 20,
"price": 4500,
"currency": "usd"
}
200 OK
{
"public_url": "https://sorted.fast/organizers/clay-kiln/events/8f3k2",
"embed_code": "<iframe src=…/events/8f3k2/embed>",
"payment": { "ready": true },
"agent": { "next": "publish embed_code" }
}

Three ways to connect.

01 / MCP server

POST /mcp

A Model Context Protocol endpoint (JSON-RPC 2.0) for Claude, Cursor, Codex and any MCP client. Core tools manage classes and registrations; virtual waiting rooms are a separate secondary option. Docs and the API catalog are also available as MCP resources.

02 / REST API

X-API-Key  ·  or Bearer

Plain JSON over HTTPS for the core event and registration platform. Queue endpoints are a separate virtual waiting-room option. Create, read, update and cancel — the same shapes the MCP tools return.

03 / Discovery

/.well-known/agent.json

Self-describing for agents: an A2A agent card, an LLM site map, operating instructions, and a machine-readable API catalog — all unauthenticated.

27 tools. One server.

Everything an organizer can do in the dashboard, your agent can do over MCP. Organizer keys are scoped to their own classes; admin keys pass an explicit organizer_id.

Events

create_event

Create a class and start its registration worker. Description accepts Markdown. Returns links, embed code and payment readiness.

list_events

List classes visible to the key (organizer-scoped, or all for admin).

get_event

Fetch one class with live registration count and current price.

update_event

Update a class (pricing mode is immutable after creation).

cancel_event

Soft-cancel a class; data is preserved, listings updated.

get_price_history

Return the dynamic-pricing history for a class, newest first.

Photos

add_event_photo

Add a photo by URL — Sorted downloads and stores the image (no object storage to manage).

set_primary_event_photo

Make an existing photo the cover/hero image.

remove_event_photo

Remove a photo from a class.

create_photo_upload_url

Get a presigned URL to upload raw image bytes directly.

Registrations

list_registrations

List registrations visible to the key.

queue_registration

Queue a registration through the ETS hot path.

get_registration

Fetch one registration by class and user.

update_registration

Update registration status or amount paid.

remove_registration

Remove a student from a class.

Queues

list_queues

List queue events visible to the key.

create_queue

Create a virtual waiting room.

get_queue

Fetch one queue with live queue length.

update_queue

Update a queue event.

delete_queue

Delete a queue event.

join_queue

Join a visitor to a queue.

get_queue_status

Return a visitor position and estimated wait.

verify_queue_token

Verify a queue release token.

Accounts & payouts

register_organizer

Self-register an organizer from scratch; returns an API key once.

get_payout_onboarding_link

Get the Stripe onboarding URL to hand the human organizer (enables payouts).

Two ways to authenticate.

Available now

API key auth

Generate a key in your dashboard and present it as X-API-Key or Authorization: Bearer <key>. Ideal for programmatic and self-hosted agents.

  • Organizer-scoped — keys only touch their own classes
  • Rate-limited per IP and per key
  • Works for both MCP and REST
Available now

OAuth "click to connect"

For hosted agent clients that onboard with a browser flow. The MCP endpoint is a standards-based protected resource — it publishes /.well-known/oauth-protected-resource metadata and challenges with WWW-Authenticate.

  • Browser login + consent, then the client gets an OAuth 2.1 access token
  • Accepted on the same MCP endpoint, interchangeably with API keys
  • RFC 9728 metadata advertises the authorization server

Give your agent something to publish.

Connect over MCP in a minute, or start with a REST key.