OpenSession

Reference

API

A JSON API under /api/v1, authenticated with an x-access-token header. No cookie, no session: a token is the whole credential. The same token also opens the MCP server at /mcp.

Getting a token

Create one in an event's admin under Settings, API. The token is shown once, at creation. Only its hash is stored, so it cannot be recovered later, only revoked and replaced. A token reaches exactly the events the person who created it can open, on this API and over MCP alike.

export TOKEN=osk_...
curl -H "x-access-token: $TOKEN" "https://opensession.opensession.workers.dev/api/v1/events"

Shape of a response

Collections share one envelope. Single records come back as { "data": { ... } }.

{
    "data": [ ... ],
    "page": 1,
    "pageSize": 25,
    "total": 42,
    "totalPages": 2
  }

Paginate with page and pageSize, as query parameters or in a POST body. pageSize is capped at 100.

Errors

Errors are JSON with a stable code, never an HTML page.

{ "error": { "code": "invalid_token", "message": "That access token is not valid." } }

401 missing or invalid token, 404 unknown event or record, 405 wrong method, 422 the body was understood but rejected, 400 the body was not valid JSON.

Endpoints

MCP server

The same data over the Model Context Protocol, so an AI agent can run the conference program directly. Streamable HTTP transport at https://opensession.opensession.workers.dev/mcp, JSON-RPC 2.0 over a single POST. Every tool wraps the endpoints above; nothing here can do more than a token can do.

Authenticate with the same token, as an x-access-token header or as Authorization: Bearer. A request with neither gets a JSON-RPC error saying where to make one. Tools reach only the events the organizer who created the token can open, which is narrower than the REST endpoints above.

curl -X POST -H "x-access-token: $TOKEN" -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' \
  "https://opensession.opensession.workers.dev/mcp"

Tools

Decision tools change status only. Sending acceptance and decline email stays the explicit step under Communications, Send decisions, which is where the templates and the calendar attachment live.

Claude Code

One command, or the JSON block if you would rather edit the file.

claude mcp add --transport http opensession https://opensession.opensession.workers.dev/mcp \
  --header "x-access-token: $TOKEN"
{
  "mcpServers": {
    "opensession": {
      "type": "http",
      "url": "https://opensession.opensession.workers.dev/mcp",
      "headers": { "x-access-token": "osk_..." }
    }
  }
}

Codex

Add this to ~/.codex/config.toml.

[mcp_servers.opensession]
url = "https://opensession.opensession.workers.dev/mcp"
http_headers = { "x-access-token" = "osk_..." }