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 audit: none - path: /api/rel/following method: get operationId: apiUserFollowing x-agentic-access: action-class: connected consequence: read subject: optional scope: - follow:read token: max-ttl: 3600 audit: none - path: /api/rel/follow/{username} method: post operationId: followUser x-agentic-access: action-class: acting consequence: write subject: required scope: - follow:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/rel/unfollow/{username} method: post operationId: unfollowUser x-agentic-access: action-class: acting consequence: write subject: required scope: - follow:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/rel/block/{username} method: post operationId: blockUser x-agentic-access: action-class: acting consequence: write subject: required scope: - follow:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/rel/unblock/{username} method: post operationId: unblockUser x-agentic-access: action-class: acting consequence: write subject: required scope: - follow:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/stream/event method: get operationId: apiStreamEvent x-agentic-access: action-class: connected consequence: read subject: optional scope: - board:play - bot:play - challenge:read token: max-ttl: 3600 audit: none - path: /api/board/seek method: post operationId: apiBoardSeek x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/stream/{gameId} method: get operationId: boardGameStream x-agentic-access: action-class: connected consequence: read subject: optional scope: - board:play token: max-ttl: 3600 audit: none - path: /api/board/game/{gameId}/move/{move} method: post operationId: boardGameMove x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/chat method: post operationId: boardGameChatPost x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/chat method: get operationId: boardGameChatGet x-agentic-access: action-class: connected consequence: read subject: optional scope: - board:play token: max-ttl: 3600 audit: none - path: /api/board/game/{gameId}/abort method: post operationId: boardGameAbort x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/resign method: post operationId: boardGameResign x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/draw/{accept} method: post operationId: boardGameDraw x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/takeback/{accept} method: post operationId: boardGameTakeback x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/claim-victory method: post operationId: boardGameClaimVictory x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/claim-draw method: post operationId: boardGameClaimDraw x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/board/game/{gameId}/berserk method: post operationId: boardGameBerserk x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/online method: get operationId: apiBotOnline x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/bot/account/upgrade method: post operationId: botAccountUpgrade x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/stream/{gameId} method: get operationId: botGameStream x-agentic-access: action-class: connected consequence: read subject: optional scope: - bot:play token: max-ttl: 3600 audit: none - path: /api/bot/game/{gameId}/move/{move} method: post operationId: botGameMove x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/chat method: post operationId: botGameChat x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/chat method: get operationId: botGameChatGet x-agentic-access: action-class: connected consequence: read subject: optional scope: - bot:play token: max-ttl: 3600 audit: none - path: /api/bot/game/{gameId}/abort method: post operationId: botGameAbort x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/resign method: post operationId: botGameResign x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/draw/{accept} method: post operationId: botGameDraw x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/takeback/{accept} method: post operationId: botGameTakeback x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/claim-victory method: post operationId: botGameClaimVictory x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bot/game/{gameId}/claim-draw method: post operationId: botGameClaimDraw x-agentic-access: action-class: acting consequence: write subject: required scope: - bot:play audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge method: get operationId: challengeList x-agentic-access: action-class: connected consequence: read subject: optional scope: - challenge:read token: max-ttl: 3600 audit: none - path: /api/challenge/{username} method: post operationId: challengeCreate x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play - bot:play - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge/{challengeId}/show method: get operationId: challengeShow x-agentic-access: action-class: connected consequence: read subject: optional scope: - challenge:read token: max-ttl: 3600 audit: none - path: /api/challenge/{challengeId}/accept method: post operationId: challengeAccept x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play - bot:play - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge/{challengeId}/decline method: post operationId: challengeDecline x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play - bot:play - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge/{challengeId}/cancel method: post operationId: challengeCancel x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play - bot:play - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge/ai method: post operationId: challengeAi x-agentic-access: action-class: acting consequence: write subject: required scope: - board:play - bot:play - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/challenge/open method: post operationId: challengeOpen 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/challenge/{gameId}/start-clocks method: post operationId: challengeStartClocks x-agentic-access: action-class: acting consequence: write subject: required scope: - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bulk-pairing method: get operationId: bulkPairingList x-agentic-access: action-class: connected consequence: read subject: optional scope: - challenge:bulk token: max-ttl: 3600 audit: none - path: /api/bulk-pairing method: post operationId: bulkPairingCreate x-agentic-access: action-class: acting consequence: write subject: required scope: - challenge:bulk audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bulk-pairing/{id}/start-clocks method: post operationId: bulkPairingStartClocks x-agentic-access: action-class: acting consequence: write subject: required scope: - challenge:bulk audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bulk-pairing/{id} method: get operationId: bulkPairingGet x-agentic-access: action-class: connected consequence: read subject: optional scope: - challenge:bulk token: max-ttl: 3600 audit: none - path: /api/bulk-pairing/{id} method: delete operationId: bulkPairingDelete x-agentic-access: action-class: acting consequence: write subject: required scope: - challenge:bulk audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/bulk-pairing/{id}/games method: get operationId: bulkPairingIdGamesGet x-agentic-access: action-class: connected consequence: read subject: optional scope: - challenge:bulk token: max-ttl: 3600 audit: none - path: /api/round/{gameId}/add-time/{seconds} method: post operationId: roundAddTime x-agentic-access: action-class: acting consequence: write subject: required scope: - challenge:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/token/admin-challenge method: post operationId: adminChallengeTokens x-agentic-access: action-class: acting consequence: write subject: required scope: - web:mod audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /inbox/{username} method: post operationId: inboxUsername x-agentic-access: action-class: acting consequence: physical subject: required scope: - msg: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/cloud-eval method: get operationId: apiCloudEval x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/external-engine method: get operationId: apiExternalEngineList x-agentic-access: action-class: connected consequence: read subject: optional scope: - engine:read token: max-ttl: 3600 audit: none - path: /api/external-engine method: post operationId: apiExternalEngineCreate x-agentic-access: action-class: acting consequence: write subject: required scope: - engine:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/external-engine/{id} method: get operationId: apiExternalEngineGet x-agentic-access: action-class: connected consequence: read subject: optional scope: - engine:read token: max-ttl: 3600 audit: none - path: /api/external-engine/{id} method: put operationId: apiExternalEnginePut x-agentic-access: action-class: acting consequence: write subject: required scope: - engine:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/external-engine/{id} method: delete operationId: apiExternalEngineDelete x-agentic-access: action-class: acting consequence: write subject: required scope: - engine:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/external-engine/{id}/analyse method: post operationId: apiExternalEngineAnalyse 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/external-engine/work method: post operationId: apiExternalEngineAcquire 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/external-engine/work/{id} method: post operationId: apiExternalEngineSubmit 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: /oauth method: get operationId: oauth x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/token method: post operationId: apiToken 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/token method: delete operationId: apiTokenDelete x-agentic-access: action-class: acting consequence: safety-critical subject: required 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/token/test method: post operationId: tokenTest 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: /masters method: get operationId: openingExplorerMaster x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /lichess method: get operationId: openingExplorerLichess x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /player method: get operationId: openingExplorerPlayer x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /masters/pgn/{gameId} method: get operationId: openingExplorerMasterGame x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /standard method: get operationId: tablebaseStandard x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /atomic method: get operationId: tablebaseAtomic x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /antichess method: get operationId: antichessAtomic x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none