Lichess · Agentic Access

Lichess Agentic Access

x-agentic-access generated

Lichess exposes 185 API operations that an AI agent could call, of which 84 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 101 read, 77 write, 3 physical, and 4 safety-critical.

4 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

ChessGamesOpen SourceNonprofitTournamentsPuzzlesBotsStreamingND-JSONOAuth
Operations: 185 Acting: 84 Human-in-the-loop: 4 Method: generated

By consequence

read 101 write 77 physical 3 safety-critical 4

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
POST /api/broadcast/round/{broadcastRoundId}/reset safety-critical required
POST /api/swiss/{id}/terminate safety-critical required
DELETE /api/token safety-critical required
POST /api/tournament/{id}/terminate safety-critical required
POST /api/swiss/{id}/withdraw physical conditional
POST /api/tournament/{id}/withdraw physical conditional
POST /inbox/{username} physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/lichess-openapi.yml
description: Recommended x-agentic-access execution contracts, classified heuristically from
  the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
  audience per deployment. See research/curity/agentic-governance/.
summary:
  operations: 185
  by_action_class:
    connected: 101
    acting: 84
  by_consequence:
    read: 101
    write: 77
    physical: 3
    safety-critical: 4
  human_in_the_loop_required: 4
operations:
- path: /api/users/status
  method: get
  operationId: apiUsersStatus
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/player
  method: get
  operationId: player
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/player/top/{nb}/{perfType}
  method: get
  operationId: playerTopNbPerfType
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}
  method: get
  operationId: apiUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/rating-history
  method: get
  operationId: apiUserRatingHistory
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/perf/{perf}
  method: get
  operationId: apiUserPerf
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/activity
  method: get
  operationId: apiUserActivity
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/daily
  method: get
  operationId: apiPuzzleDaily
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/{id}
  method: get
  operationId: apiPuzzleId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/next
  method: get
  operationId: apiPuzzleNext
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - puzzle:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/batch/{angle}
  method: get
  operationId: apiPuzzleBatchSelect
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - puzzle:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/batch/{angle}
  method: post
  operationId: apiPuzzleBatchSolve
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - puzzle:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/puzzle/activity
  method: get
  operationId: apiPuzzleActivity
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - puzzle:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/replay/{days}/{theme}
  method: get
  operationId: apiPuzzleReplay
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - puzzle:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/puzzle/dashboard/{days}
  method: get
  operationId: apiPuzzleDashboard
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - puzzle:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/storm/dashboard/{username}
  method: get
  operationId: apiStormDashboard
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/racer
  method: post
  operationId: racerPost
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - racer:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/racer/{id}
  method: get
  operationId: racerGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/users
  method: post
  operationId: apiUsers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/account
  method: get
  operationId: accountMe
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/account/email
  method: get
  operationId: accountEmail
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - email:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/account/preferences
  method: get
  operationId: account
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - preference:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/account/kid
  method: get
  operationId: accountKid
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - preference:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/account/kid
  method: post
  operationId: accountKidPost
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - preference:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/timeline
  method: get
  operationId: timeline
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /game/export/{gameId}
  method: get
  operationId: gamePgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /game/{gameId}/chat
  method: get
  operationId: gameChatGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/current-game
  method: get
  operationId: apiUserCurrentGame
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/games/user/{username}
  method: get
  operationId: apiGamesUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/games/export/_ids
  method: post
  operationId: gamesExportIds
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/stream/games-by-users
  method: post
  operationId: gamesByUsers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/stream/games/{streamId}
  method: post
  operationId: gamesByIds
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/stream/games/{streamId}/add
  method: post
  operationId: gamesByIdsAdd
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/account/playing
  method: get
  operationId: apiAccountPlaying
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/stream/game/{id}
  method: get
  operationId: streamGame
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/import
  method: post
  operationId: gameImport
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/games/export/imports
  method: get
  operationId: apiImportedGamesUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/games/export/bookmarks
  method: get
  operationId: apiExportBookmarks
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tv/channels
  method: get
  operationId: tvChannels
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tv/feed
  method: get
  operationId: tvFeed
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tv/{channel}/feed
  method: get
  operationId: tvChannelFeed
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tv/{channel}
  method: get
  operationId: tvChannelGames
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tournament
  method: get
  operationId: apiTournament
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tournament
  method: post
  operationId: apiTournamentPost
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/tournament/{id}
  method: get
  operationId: tournament
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tournament/{id}
  method: post
  operationId: apiTournamentUpdate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/tournament/{id}/join
  method: post
  operationId: apiTournamentJoin
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/tournament/{id}/withdraw
  method: post
  operationId: apiTournamentWithdraw
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/tournament/{id}/terminate
  method: post
  operationId: apiTournamentTerminate
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /api/tournament/team-battle/{id}
  method: post
  operationId: apiTournamentTeamBattlePost
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/tournament/{id}/games
  method: get
  operationId: gamesByTournament
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tournament/{id}/results
  method: get
  operationId: resultsByTournament
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/tournament/{id}/teams
  method: get
  operationId: teamsByTournament
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/tournament/created
  method: get
  operationId: apiUserNameTournamentCreated
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/tournament/played
  method: get
  operationId: apiUserNameTournamentPlayed
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/swiss/new/{teamId}
  method: post
  operationId: apiSwissNew
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/swiss/{id}
  method: get
  operationId: swiss
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/swiss/{id}/edit
  method: post
  operationId: apiSwissUpdate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/swiss/{id}/schedule-next-round
  method: post
  operationId: apiSwissScheduleNextRound
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/swiss/{id}/join
  method: post
  operationId: apiSwissJoin
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/swiss/{id}/withdraw
  method: post
  operationId: apiSwissWithdraw
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/swiss/{id}/terminate
  method: post
  operationId: apiSwissTerminate
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    scope:
    - tournament:write
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /swiss/{id}.trf
  method: get
  operationId: swissTrf
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/swiss/{id}/games
  method: get
  operationId: gamesBySwiss
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/swiss/{id}/results
  method: get
  operationId: resultsBySwiss
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/{teamId}/swiss
  method: get
  operationId: apiTeamSwiss
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/study/{studyId}/{chapterId}.pgn
  method: get
  operationId: studyChapterPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/study/{studyId}.pgn
  method: get
  operationId: studyAllChaptersPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/study/{studyId}.pgn
  method: head
  operationId: studyAllChaptersHead
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/study
  method: post
  operationId: apiStudyPost
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/study/{studyId}/import-pgn
  method: post
  operationId: apiStudyImportPGN
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/study/{studyId}/{chapterId}/tags
  method: post
  operationId: apiStudyChapterTags
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/study/{studyId}/{chapterId}/moves
  method: post
  operationId: apiStudyChapterMoves
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/study/by/{username}/export.pgn
  method: get
  operationId: studyExportAllPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/study/by/{username}
  method: get
  operationId: studyListMetadata
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/study/{studyId}/{chapterId}
  method: delete
  operationId: apiStudyStudyIdChapterIdDelete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/broadcast
  method: get
  operationId: broadcastsOfficial
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/top
  method: get
  operationId: broadcastsTop
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/by/{username}
  method: get
  operationId: broadcastsByUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/search
  method: get
  operationId: broadcastsSearch
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/new
  method: post
  operationId: broadcastTourCreate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/broadcast/{broadcastTournamentId}
  method: get
  operationId: broadcastTourGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/{broadcastTournamentId}/players
  method: get
  operationId: broadcastPlayersGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/{broadcastTournamentId}/players/{playerId}
  method: get
  operationId: broadcastPlayerGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/{broadcastTournamentId}/teams/standings
  method: get
  operationId: broadcastTeamLeaderboardGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/{broadcastTournamentId}/edit
  method: post
  operationId: broadcastTourUpdate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /broadcast/{broadcastTournamentId}/new
  method: post
  operationId: broadcastRoundCreate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/broadcast/{broadcastTournamentSlug}/{broadcastRoundSlug}/{broadcastRoundId}
  method: get
  operationId: broadcastRoundGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /broadcast/round/{broadcastRoundId}/edit
  method: post
  operationId: broadcastRoundUpdate
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/broadcast/round/{broadcastRoundId}/reset
  method: post
  operationId: broadcastRoundReset
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /api/broadcast/round/{broadcastRoundId}/push
  method: post
  operationId: broadcastPush
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - study:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/stream/broadcast/round/{broadcastRoundId}.pgn
  method: get
  operationId: broadcastStreamRoundPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/round/{broadcastRoundId}.pgn
  method: get
  operationId: broadcastRoundPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/{broadcastTournamentId}.pgn
  method: get
  operationId: broadcastAllRoundsPgn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/broadcast/my-rounds
  method: get
  operationId: broadcastMyRoundsGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - study:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/fide/player/{playerId}
  method: get
  operationId: fidePlayerGet
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/fide/player/{playerId}/ratings
  method: get
  operationId: fidePlayerRatings
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/fide/player
  method: get
  operationId: fidePlayerSearch
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/simul
  method: get
  operationId: apiSimul
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/{teamId}
  method: get
  operationId: teamShow
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/all
  method: get
  operationId: teamAll
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/of/{username}
  method: get
  operationId: teamOfUsername
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/search
  method: get
  operationId: teamSearch
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/{teamId}/users
  method: get
  operationId: teamIdUsers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - team:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/{teamId}/arena
  method: get
  operationId: apiTeamArena
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /team/{teamId}/join
  method: post
  operationId: teamIdJoin
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /team/{teamId}/quit
  method: post
  operationId: teamIdQuit
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/team/{teamId}/requests
  method: get
  operationId: teamRequests
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - team:read
    token:
      max-ttl: 3600
    audit: none
- path: /api/team/{teamId}/request/{userId}/accept
  method: post
  operationId: teamRequestAccept
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:lead
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/team/{teamId}/request/{userId}/decline
  method: post
  operationId: teamRequestDecline
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:lead
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/team/{teamId}/kick/{userId}
  method: post
  operationId: teamIdKickUserId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:lead
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /team/{teamId}/pm-all
  method: post
  operationId: teamIdPmAll
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - team:lead
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/streamer/live
  method: get
  operationId: streamerLive
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/crosstable/{user1}/{user2}
  method: get
  operationId: apiCrosstable
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/player/autocomplete
  method: get
  operationId: apiPlayerAutocomplete
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/user/{username}/note
  method: post
  operationId: writeNote
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /api/user/{username}/note
  method: get
  operationId: readNote
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lichess/refs/heads/main/agentic-access/lichess-agentic-access.yml