naftiko: 1.0.0-alpha2 info: label: Lichess API — Broadcasts description: 'Lichess API — Broadcasts. 19 operations. Lead operation: Get official broadcasts. Self-contained Naftiko capability covering one Lichess business surface.' tags: - Lichess - Broadcasts created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: LICHESS_API_TOKEN: LICHESS_API_TOKEN capability: consumes: - type: http namespace: broadcasts baseUri: https://lichess.org description: Lichess Broadcasts business capability. Self-contained, no shared references. resources: - name: broadcast path: /api/broadcast operations: - name: broadcastsofficial method: GET description: 'Get official broadcasts' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: nb in: query type: string required: false - name: html in: query type: string required: false - name: live in: query type: string required: false - name: broadcast-top path: /api/broadcast/top operations: - name: broadcaststop method: GET description: 'Get paginated top broadcast previews' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: page in: query type: string required: false - name: html in: query type: string required: false - name: broadcast-by-username path: /api/broadcast/by/{username} operations: - name: broadcastsbyuser method: GET description: 'Get broadcasts created by a user' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: username in: path type: string required: true - name: page in: query type: string required: false - name: html in: query type: string required: false - name: broadcast-search path: /api/broadcast/search operations: - name: broadcastssearch method: GET description: 'Search broadcasts' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: page in: query type: string required: false - name: q in: query type: string required: false - name: broadcast-new path: /broadcast/new operations: - name: broadcasttourcreate method: POST description: 'Create a broadcast tournament' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object required: false - name: broadcast-broadcasttournamentid path: /api/broadcast/{broadcastTournamentId} operations: - name: broadcasttourget method: GET description: 'Get a broadcast tournament' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: broadcast-broadcasttournamentid-players path: /broadcast/{broadcastTournamentId}/players operations: - name: broadcastplayersget method: GET description: 'Get players of a broadcast' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: broadcast-broadcasttournamentid-players-playerid path: /broadcast/{broadcastTournamentId}/players/{playerId} operations: - name: broadcastplayerget method: GET description: 'Get a player of a broadcast' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: playerId in: path type: string required: true - name: broadcast-broadcasttournamentid-teams-standings path: /broadcast/{broadcastTournamentId}/teams/standings operations: - name: broadcastteamleaderboardget method: GET description: 'Get the team leaderboard of a broadcast' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: broadcast-broadcasttournamentid-edit path: /broadcast/{broadcastTournamentId}/edit operations: - name: broadcasttourupdate method: POST description: 'Update your broadcast tournament' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: body in: body type: object required: false - name: broadcast-broadcasttournamentid-new path: /broadcast/{broadcastTournamentId}/new operations: - name: broadcastroundcreate method: POST description: 'Create a broadcast round' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: body in: body type: object required: false - name: broadcast-broadcasttournamentslug-broadcastroundslug-broadcastroundid path: /api/broadcast/{broadcastTournamentSlug}/{broadcastRoundSlug}/{broadcastRoundId} operations: - name: broadcastroundget method: GET description: 'Get a broadcast round' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentSlug in: path type: string required: true - name: broadcastRoundSlug in: path type: string required: true - name: broadcastRoundId in: path type: string required: true - name: broadcast-round-broadcastroundid-edit path: /broadcast/round/{broadcastRoundId}/edit operations: - name: broadcastroundupdate method: POST description: 'Update a broadcast round' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastRoundId in: path type: string required: true - name: body in: body type: object required: false - name: broadcast-round-broadcastroundid-reset path: /api/broadcast/round/{broadcastRoundId}/reset operations: - name: broadcastroundreset method: POST description: 'Reset a broadcast round' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastRoundId in: path type: string required: true - name: broadcast-round-broadcastroundid-push path: /api/broadcast/round/{broadcastRoundId}/push operations: - name: broadcastpush method: POST description: 'Push PGN to a broadcast round' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastRoundId in: path type: string required: true - name: body in: body type: object required: false - name: stream-broadcast-round-broadcastroundid-pgn path: /api/stream/broadcast/round/{broadcastRoundId}.pgn operations: - name: broadcaststreamroundpgn method: GET description: 'Stream an ongoing broadcast round as PGN' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastRoundId in: path type: string required: true - name: clocks in: query type: string required: false - name: comments in: query type: string required: false - name: broadcast-round-broadcastroundid-pgn path: /api/broadcast/round/{broadcastRoundId}.pgn operations: - name: broadcastroundpgn method: GET description: 'Export one round as PGN' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastRoundId in: path type: string required: true - name: clocks in: query type: string required: false - name: comments in: query type: string required: false - name: broadcast-broadcasttournamentid-pgn path: /api/broadcast/{broadcastTournamentId}.pgn operations: - name: broadcastallroundspgn method: GET description: 'Export all rounds as PGN' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: broadcastTournamentId in: path type: string required: true - name: clocks in: query type: string required: false - name: comments in: query type: string required: false - name: broadcast-my-rounds path: /api/broadcast/my-rounds operations: - name: broadcastmyroundsget method: GET description: 'Get your broadcast rounds' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: nb in: query type: string required: false authentication: type: bearer value: '{{env.LICHESS_API_TOKEN}}' placement: header exposes: - type: rest namespace: broadcasts-rest port: 8080 description: REST adapter for Lichess Broadcasts. One Spectral-compliant resource per consumed operation. resources: - path: /v1/api/broadcast name: broadcast description: REST surface for broadcast. operations: - method: GET name: broadcastsofficial description: 'Get official broadcasts' call: broadcasts.broadcastsofficial with: nb: rest.query.nb html: rest.query.html live: rest.query.live outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/top name: broadcast-top description: REST surface for broadcast-top. operations: - method: GET name: broadcaststop description: 'Get paginated top broadcast previews' call: broadcasts.broadcaststop with: page: rest.query.page html: rest.query.html outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/by/{username} name: broadcast-by-username description: REST surface for broadcast-by-username. operations: - method: GET name: broadcastsbyuser description: 'Get broadcasts created by a user' call: broadcasts.broadcastsbyuser with: username: rest.path.username page: rest.query.page html: rest.query.html outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/search name: broadcast-search description: REST surface for broadcast-search. operations: - method: GET name: broadcastssearch description: 'Search broadcasts' call: broadcasts.broadcastssearch with: page: rest.query.page q: rest.query.q outputParameters: - type: object mapping: $. - path: /v1/broadcast/new name: broadcast-new description: REST surface for broadcast-new. operations: - method: POST name: broadcasttourcreate description: 'Create a broadcast tournament' call: broadcasts.broadcasttourcreate with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/{broadcastTournamentId} name: broadcast-broadcasttournamentid description: REST surface for broadcast-broadcasttournamentid. operations: - method: GET name: broadcasttourget description: 'Get a broadcast tournament' call: broadcasts.broadcasttourget with: broadcastTournamentId: rest.path.broadcastTournamentId outputParameters: - type: object mapping: $. - path: /v1/broadcast/{broadcastTournamentId}/players name: broadcast-broadcasttournamentid-players description: REST surface for broadcast-broadcasttournamentid-players. operations: - method: GET name: broadcastplayersget description: 'Get players of a broadcast' call: broadcasts.broadcastplayersget with: broadcastTournamentId: rest.path.broadcastTournamentId outputParameters: - type: object mapping: $. - path: /v1/broadcast/{broadcastTournamentId}/players/{playerId} name: broadcast-broadcasttournamentid-players-playerid description: REST surface for broadcast-broadcasttournamentid-players-playerid. operations: - method: GET name: broadcastplayerget description: 'Get a player of a broadcast' call: broadcasts.broadcastplayerget with: broadcastTournamentId: rest.path.broadcastTournamentId playerId: rest.path.playerId outputParameters: - type: object mapping: $. - path: /v1/broadcast/{broadcastTournamentId}/teams/standings name: broadcast-broadcasttournamentid-teams-standings description: REST surface for broadcast-broadcasttournamentid-teams-standings. operations: - method: GET name: broadcastteamleaderboardget description: 'Get the team leaderboard of a broadcast' call: broadcasts.broadcastteamleaderboardget with: broadcastTournamentId: rest.path.broadcastTournamentId outputParameters: - type: object mapping: $. - path: /v1/broadcast/{broadcastTournamentId}/edit name: broadcast-broadcasttournamentid-edit description: REST surface for broadcast-broadcasttournamentid-edit. operations: - method: POST name: broadcasttourupdate description: 'Update your broadcast tournament' call: broadcasts.broadcasttourupdate with: broadcastTournamentId: rest.path.broadcastTournamentId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/broadcast/{broadcastTournamentId}/new name: broadcast-broadcasttournamentid-new description: REST surface for broadcast-broadcasttournamentid-new. operations: - method: POST name: broadcastroundcreate description: 'Create a broadcast round' call: broadcasts.broadcastroundcreate with: broadcastTournamentId: rest.path.broadcastTournamentId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/{broadcastTournamentSlug}/{broadcastRoundSlug}/{broadcastRoundId} name: broadcast-broadcasttournamentslug-broadcastroundslug-broadcastroundid description: REST surface for broadcast-broadcasttournamentslug-broadcastroundslug-broadcastroundid. operations: - method: GET name: broadcastroundget description: 'Get a broadcast round' call: broadcasts.broadcastroundget with: broadcastTournamentSlug: rest.path.broadcastTournamentSlug broadcastRoundSlug: rest.path.broadcastRoundSlug broadcastRoundId: rest.path.broadcastRoundId outputParameters: - type: object mapping: $. - path: /v1/broadcast/round/{broadcastRoundId}/edit name: broadcast-round-broadcastroundid-edit description: REST surface for broadcast-round-broadcastroundid-edit. operations: - method: POST name: broadcastroundupdate description: 'Update a broadcast round' call: broadcasts.broadcastroundupdate with: broadcastRoundId: rest.path.broadcastRoundId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/round/{broadcastRoundId}/reset name: broadcast-round-broadcastroundid-reset description: REST surface for broadcast-round-broadcastroundid-reset. operations: - method: POST name: broadcastroundreset description: 'Reset a broadcast round' call: broadcasts.broadcastroundreset with: broadcastRoundId: rest.path.broadcastRoundId outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/round/{broadcastRoundId}/push name: broadcast-round-broadcastroundid-push description: REST surface for broadcast-round-broadcastroundid-push. operations: - method: POST name: broadcastpush description: 'Push PGN to a broadcast round' call: broadcasts.broadcastpush with: broadcastRoundId: rest.path.broadcastRoundId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/stream/broadcast/round/{broadcastRoundId}.pgn name: stream-broadcast-round-broadcastroundid-pgn description: REST surface for stream-broadcast-round-broadcastroundid-pgn. operations: - method: GET name: broadcaststreamroundpgn description: 'Stream an ongoing broadcast round as PGN' call: broadcasts.broadcaststreamroundpgn with: broadcastRoundId: rest.path.broadcastRoundId clocks: rest.query.clocks comments: rest.query.comments outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/round/{broadcastRoundId}.pgn name: broadcast-round-broadcastroundid-pgn description: REST surface for broadcast-round-broadcastroundid-pgn. operations: - method: GET name: broadcastroundpgn description: 'Export one round as PGN' call: broadcasts.broadcastroundpgn with: broadcastRoundId: rest.path.broadcastRoundId clocks: rest.query.clocks comments: rest.query.comments outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/{broadcastTournamentId}.pgn name: broadcast-broadcasttournamentid-pgn description: REST surface for broadcast-broadcasttournamentid-pgn. operations: - method: GET name: broadcastallroundspgn description: 'Export all rounds as PGN' call: broadcasts.broadcastallroundspgn with: broadcastTournamentId: rest.path.broadcastTournamentId clocks: rest.query.clocks comments: rest.query.comments outputParameters: - type: object mapping: $. - path: /v1/api/broadcast/my-rounds name: broadcast-my-rounds description: REST surface for broadcast-my-rounds. operations: - method: GET name: broadcastmyroundsget description: 'Get your broadcast rounds' call: broadcasts.broadcastmyroundsget with: nb: rest.query.nb outputParameters: - type: object mapping: $. - type: mcp namespace: broadcasts-mcp port: 9090 transport: http description: MCP adapter for Lichess Broadcasts. One tool per consumed operation. tools: - name: lichess-broadcastsofficial description: 'Get official broadcasts' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastsofficial with: nb: tools.nb html: tools.html live: tools.live outputParameters: - type: object mapping: $. - name: lichess-broadcaststop description: 'Get paginated top broadcast previews' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcaststop with: page: tools.page html: tools.html outputParameters: - type: object mapping: $. - name: lichess-broadcastsbyuser description: 'Get broadcasts created by a user' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastsbyuser with: username: tools.username page: tools.page html: tools.html outputParameters: - type: object mapping: $. - name: lichess-broadcastssearch description: 'Search broadcasts' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastssearch with: page: tools.page q: tools.q outputParameters: - type: object mapping: $. - name: lichess-broadcasttourcreate description: 'Create a broadcast tournament' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcasttourcreate with: body: tools.body outputParameters: - type: object mapping: $. - name: lichess-broadcasttourget description: 'Get a broadcast tournament' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcasttourget with: broadcastTournamentId: tools.broadcastTournamentId outputParameters: - type: object mapping: $. - name: lichess-broadcastplayersget description: 'Get players of a broadcast' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastplayersget with: broadcastTournamentId: tools.broadcastTournamentId outputParameters: - type: object mapping: $. - name: lichess-broadcastplayerget description: 'Get a player of a broadcast' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastplayerget with: broadcastTournamentId: tools.broadcastTournamentId playerId: tools.playerId outputParameters: - type: object mapping: $. - name: lichess-broadcastteamleaderboardget description: 'Get the team leaderboard of a broadcast' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastteamleaderboardget with: broadcastTournamentId: tools.broadcastTournamentId outputParameters: - type: object mapping: $. - name: lichess-broadcasttourupdate description: 'Update your broadcast tournament' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcasttourupdate with: broadcastTournamentId: tools.broadcastTournamentId body: tools.body outputParameters: - type: object mapping: $. - name: lichess-broadcastroundcreate description: 'Create a broadcast round' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcastroundcreate with: broadcastTournamentId: tools.broadcastTournamentId body: tools.body outputParameters: - type: object mapping: $. - name: lichess-broadcastroundget description: 'Get a broadcast round' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastroundget with: broadcastTournamentSlug: tools.broadcastTournamentSlug broadcastRoundSlug: tools.broadcastRoundSlug broadcastRoundId: tools.broadcastRoundId outputParameters: - type: object mapping: $. - name: lichess-broadcastroundupdate description: 'Update a broadcast round' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcastroundupdate with: broadcastRoundId: tools.broadcastRoundId body: tools.body outputParameters: - type: object mapping: $. - name: lichess-broadcastroundreset description: 'Reset a broadcast round' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcastroundreset with: broadcastRoundId: tools.broadcastRoundId outputParameters: - type: object mapping: $. - name: lichess-broadcastpush description: 'Push PGN to a broadcast round' hints: readOnly: false destructive: false idempotent: false call: broadcasts.broadcastpush with: broadcastRoundId: tools.broadcastRoundId body: tools.body outputParameters: - type: object mapping: $. - name: lichess-broadcaststreamroundpgn description: 'Stream an ongoing broadcast round as PGN' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcaststreamroundpgn with: broadcastRoundId: tools.broadcastRoundId clocks: tools.clocks comments: tools.comments outputParameters: - type: object mapping: $. - name: lichess-broadcastroundpgn description: 'Export one round as PGN' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastroundpgn with: broadcastRoundId: tools.broadcastRoundId clocks: tools.clocks comments: tools.comments outputParameters: - type: object mapping: $. - name: lichess-broadcastallroundspgn description: 'Export all rounds as PGN' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastallroundspgn with: broadcastTournamentId: tools.broadcastTournamentId clocks: tools.clocks comments: tools.comments outputParameters: - type: object mapping: $. - name: lichess-broadcastmyroundsget description: 'Get your broadcast rounds' hints: readOnly: true destructive: false idempotent: false call: broadcasts.broadcastmyroundsget with: nb: tools.nb outputParameters: - type: object mapping: $.