Skip to content
Back to Sorted Registration Agent

Card snapshot

sorted.fast · 2026-06-18 17:00:06 UTC · 58dfabf641224681d32614c448eed92341261ddf02b26e9f86f8d4292b516418

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Sorted Registration Agent",
  "version": "1.1.0",
  "authentication": {
    "description": "All API requests require an X-API-Key header. Provider-scoped keys restrict access to the authenticated provider's events. Admin keys (no user) have unrestricted access and must supply owner_id explicitly.",
    "apiKeyHeader": "X-API-Key",
    "schemes": [
      "apiKey"
    ]
  },
  "description": "Manages event creation, capacity, dynamic pricing, and student registration with high-concurrency support. Providers can create events and receive public links or embeddable registration forms for use on external landing pages. Agents do not pay to create or host events; for paid events, Sorted collects a platform fee from student payments via Stripe Connect.",
  "url": "https://sorted.fast",
  "provider": {
    "url": "https://sorted.fast",
    "organization": "Sorted"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "documentationUrl": "https://sorted.fast/api",
  "humanDocumentationUrl": "https://sorted.fast/docs.md",
  "llmsTxtUrl": "https://sorted.fast/llms.txt",
  "schema_version": "0.3",
  "skills": [
    {
      "id": "list_events",
      "name": "List Events",
      "description": "Returns all events owned by the authenticated provider, including status, registration count, current price, and embed URL.",
      "examples": [
        "List all my upcoming events",
        "Show me events with available spots"
      ],
      "tags": [
        "events",
        "listing"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_event",
      "name": "Get Event",
      "description": "Returns full details for a single event including real-time registration count, current dynamic price, public URL, and embed URL.",
      "examples": [
        "Get details for event 42"
      ],
      "tags": [
        "events"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "create_event",
      "name": "Create Event",
      "description": "Creates a new event with title, description, capacity, price, datetime, and optional recurrence or dynamic pricing settings. Pricing mode is locked after creation. Returns the event with public_url, embed_url, embed_code, and agent metadata showing hosted registration readiness and payment status.",
      "examples": [
        "Create a yoga event on Friday at 6pm for 20 students at $50",
        "Set up a weekly recurring pottery workshop with dynamic pricing"
      ],
      "tags": [
        "events",
        "creation"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "update_event",
      "name": "Update Event",
      "description": "Updates an existing event's details such as title, capacity, or price. Pricing mode cannot be changed after the event is created.",
      "examples": [
        "Change the capacity of event 42 to 30"
      ],
      "tags": [
        "events"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "cancel_event",
      "name": "Cancel Event",
      "description": "Soft-cancels an event by setting cancelled_at. Stops accepting registrations immediately. The event record and its registrations are preserved.",
      "examples": [
        "Cancel event 42",
        "Close registration for the Friday yoga session"
      ],
      "tags": [
        "events",
        "cancellation"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_price_history",
      "name": "Get Price History",
      "description": "Returns the full dynamic pricing history for an event, including each price change, the reason, and timestamp.",
      "examples": [
        "Show price history for event 42"
      ],
      "tags": [
        "events",
        "pricing"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "register_student",
      "name": "Register Student",
      "description": "Queues a student registration via the high-concurrency ETS path. Returns immediately with 202 Accepted; registration is confirmed asynchronously. Handles capacity limits and waitlisting automatically.",
      "examples": [
        "Register user 7 in event 42",
        "Add student to the waitlist for event 99"
      ],
      "tags": [
        "registrations"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "embed_registration_form",
      "name": "Embed Registration Form",
      "description": "The embed_url returned with each event points to a self-contained LiveView form at /events/:id/embed. Drop it in an iframe on any landing page. Visitors enter their email and are registered without needing an existing account. Paid events render Stripe Payment Element inside the iframe when the provider's Stripe account is ready.",
      "examples": [
        "Give me the iframe URL for event 42",
        "Embed the signup form on my landing page"
      ],
      "tags": [
        "registrations",
        "embed"
      ],
      "inputModes": [],
      "outputModes": [
        "text/html"
      ]
    }
  ],
  "supportedInterfaces": [
    {
      "type": "a2a",
      "url": "https://sorted.fast/.well-known/agent.json"
    },
    {
      "type": "api",
      "url": "https://sorted.fast/api"
    },
    {
      "type": "mcp",
      "url": "https://sorted.fast/mcp"
    }
  ]
}