Lichess · Capability

Lichess API — Teams

Lichess API — Teams. 14 operations. Lead operation: Get team swiss tournaments. Self-contained Naftiko capability covering one Lichess business surface.

Lichess API — Teams is a Naftiko capability published by Lichess, one of 23 capabilities the APIs.io network indexes for this provider. It bundles 14 operations across the GET and POST methods.

The capability includes 8 read-only operations and 6 state-changing operations. Lead operation: Get team swiss tournaments. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Lichess and Teams.

Run with Naftiko LichessTeams

What You Can Do

GET
Apiteamswiss — Get team swiss tournaments
/v1/api/team/{teamId}/swiss
GET
Teamshow — Get a single team
/v1/api/team/{teamId}
GET
Teamall — Get popular teams
/v1/api/team/all
GET
Teamofusername — Teams of a player
/v1/api/team/of/{username}
GET
Teamsearch — Search teams
/v1/api/team/search
GET
Teamidusers — Get members of a team
/v1/api/team/{teamId}/users
GET
Apiteamarena — Get team Arena tournaments
/v1/api/team/{teamId}/arena
POST
Teamidjoin — Join a team
/v1/team/{teamId}/join
POST
Teamidquit — Leave a team
/v1/team/{teamId}/quit
GET
Teamrequests — Get join requests
/v1/api/team/{teamId}/requests
POST
Teamrequestaccept — Accept join request
/v1/api/team/{teamId}/request/{userId}/accept
POST
Teamrequestdecline — Decline join request
/v1/api/team/{teamId}/request/{userId}/decline
POST
Teamidkickuserid — Kick a user from your team
/v1/api/team/{teamId}/kick/{userId}
POST
Teamidpmall — Message all members
/v1/team/{teamId}/pm-all

MCP Tools

lichess-apiteamswiss

Get team swiss tournaments

read-only
lichess-teamshow

Get a single team

read-only
lichess-teamall

Get popular teams

read-only
lichess-teamofusername

Teams of a player

read-only
lichess-teamsearch

Search teams

read-only
lichess-teamidusers

Get members of a team

read-only
lichess-apiteamarena

Get team Arena tournaments

read-only
lichess-teamidjoin

Join a team

lichess-teamidquit

Leave a team

lichess-teamrequests

Get join requests

read-only
lichess-teamrequestaccept

Accept join request

lichess-teamrequestdecline

Decline join request

lichess-teamidkickuserid

Kick a user from your team

lichess-teamidpmall

Message all members

Capability Spec

teams.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Lichess API — Teams
  description: 'Lichess API — Teams. 14 operations. Lead operation: Get team swiss tournaments. Self-contained Naftiko capability covering one Lichess business surface.'
  tags:
  - Lichess
  - Teams
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    LICHESS_API_TOKEN: LICHESS_API_TOKEN
capability:
  consumes:
  - type: http
    namespace: teams
    baseUri: https://lichess.org
    description: Lichess Teams business capability. Self-contained, no shared references.
    resources:
    - name: team-teamid-swiss
      path: /api/team/{teamId}/swiss
      operations:
      - name: apiteamswiss
        method: GET
        description: 'Get team swiss tournaments'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: max
          in: query
          type: string
          required: false
        - name: status
          in: query
          type: string
          required: false
        - name: createdBy
          in: query
          type: string
          required: false
        - name: name
          in: query
          type: string
          required: false
    - name: team-teamid
      path: /api/team/{teamId}
      operations:
      - name: teamshow
        method: GET
        description: 'Get a single team'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
    - name: team-all
      path: /api/team/all
      operations:
      - name: teamall
        method: GET
        description: 'Get popular teams'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: page
          in: query
          type: string
          required: false
    - name: team-of-username
      path: /api/team/of/{username}
      operations:
      - name: teamofusername
        method: GET
        description: 'Teams of a player'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
    - name: team-search
      path: /api/team/search
      operations:
      - name: teamsearch
        method: GET
        description: 'Search teams'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: text
          in: query
          type: string
          required: false
        - name: page
          in: query
          type: string
          required: false
    - name: team-teamid-users
      path: /api/team/{teamId}/users
      operations:
      - name: teamidusers
        method: GET
        description: 'Get members of a team'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: full
          in: query
          type: string
          required: false
    - name: team-teamid-arena
      path: /api/team/{teamId}/arena
      operations:
      - name: apiteamarena
        method: GET
        description: 'Get team Arena tournaments'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: max
          in: query
          type: string
          required: false
        - name: status
          in: query
          type: string
          required: false
        - name: createdBy
          in: query
          type: string
          required: false
        - name: name
          in: query
          type: string
          required: false
    - name: team-teamid-join
      path: /team/{teamId}/join
      operations:
      - name: teamidjoin
        method: POST
        description: 'Join a team'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          required: false
    - name: team-teamid-quit
      path: /team/{teamId}/quit
      operations:
      - name: teamidquit
        method: POST
        description: 'Leave a team'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
    - name: team-teamid-requests
      path: /api/team/{teamId}/requests
      operations:
      - name: teamrequests
        method: GET
        description: 'Get join requests'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: declined
          in: query
          type: string
          required: false
    - name: team-teamid-request-userid-accept
      path: /api/team/{teamId}/request/{userId}/accept
      operations:
      - name: teamrequestaccept
        method: POST
        description: 'Accept join request'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: userId
          in: path
          type: string
          required: true
    - name: team-teamid-request-userid-decline
      path: /api/team/{teamId}/request/{userId}/decline
      operations:
      - name: teamrequestdecline
        method: POST
        description: 'Decline join request'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: userId
          in: path
          type: string
          required: true
    - name: team-teamid-kick-userid
      path: /api/team/{teamId}/kick/{userId}
      operations:
      - name: teamidkickuserid
        method: POST
        description: 'Kick a user from your team'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: userId
          in: path
          type: string
          required: true
    - name: team-teamid-pm-all
      path: /team/{teamId}/pm-all
      operations:
      - name: teamidpmall
        method: POST
        description: 'Message all members'
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          required: false
    authentication:
      type: bearer
      value: '{{env.LICHESS_API_TOKEN}}'
      placement: header
  exposes:
  - type: rest
    namespace: teams-rest
    port: 8080
    description: REST adapter for Lichess Teams. One Spectral-compliant resource per consumed operation.
    resources:
    - path: /v1/api/team/{teamId}/swiss
      name: team-teamid-swiss
      description: REST surface for team-teamid-swiss.
      operations:
      - method: GET
        name: apiteamswiss
        description: 'Get team swiss tournaments'
        call: teams.apiteamswiss
        with:
          teamId: rest.path.teamId
          max: rest.query.max
          status: rest.query.status
          createdBy: rest.query.createdBy
          name: rest.query.name
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}
      name: team-teamid
      description: REST surface for team-teamid.
      operations:
      - method: GET
        name: teamshow
        description: 'Get a single team'
        call: teams.teamshow
        with:
          teamId: rest.path.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/all
      name: team-all
      description: REST surface for team-all.
      operations:
      - method: GET
        name: teamall
        description: 'Get popular teams'
        call: teams.teamall
        with:
          page: rest.query.page
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/of/{username}
      name: team-of-username
      description: REST surface for team-of-username.
      operations:
      - method: GET
        name: teamofusername
        description: 'Teams of a player'
        call: teams.teamofusername
        with:
          username: rest.path.username
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/search
      name: team-search
      description: REST surface for team-search.
      operations:
      - method: GET
        name: teamsearch
        description: 'Search teams'
        call: teams.teamsearch
        with:
          text: rest.query.text
          page: rest.query.page
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/users
      name: team-teamid-users
      description: REST surface for team-teamid-users.
      operations:
      - method: GET
        name: teamidusers
        description: 'Get members of a team'
        call: teams.teamidusers
        with:
          teamId: rest.path.teamId
          full: rest.query.full
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/arena
      name: team-teamid-arena
      description: REST surface for team-teamid-arena.
      operations:
      - method: GET
        name: apiteamarena
        description: 'Get team Arena tournaments'
        call: teams.apiteamarena
        with:
          teamId: rest.path.teamId
          max: rest.query.max
          status: rest.query.status
          createdBy: rest.query.createdBy
          name: rest.query.name
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/team/{teamId}/join
      name: team-teamid-join
      description: REST surface for team-teamid-join.
      operations:
      - method: POST
        name: teamidjoin
        description: 'Join a team'
        call: teams.teamidjoin
        with:
          teamId: rest.path.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/team/{teamId}/quit
      name: team-teamid-quit
      description: REST surface for team-teamid-quit.
      operations:
      - method: POST
        name: teamidquit
        description: 'Leave a team'
        call: teams.teamidquit
        with:
          teamId: rest.path.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/requests
      name: team-teamid-requests
      description: REST surface for team-teamid-requests.
      operations:
      - method: GET
        name: teamrequests
        description: 'Get join requests'
        call: teams.teamrequests
        with:
          teamId: rest.path.teamId
          declined: rest.query.declined
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/request/{userId}/accept
      name: team-teamid-request-userid-accept
      description: REST surface for team-teamid-request-userid-accept.
      operations:
      - method: POST
        name: teamrequestaccept
        description: 'Accept join request'
        call: teams.teamrequestaccept
        with:
          teamId: rest.path.teamId
          userId: rest.path.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/request/{userId}/decline
      name: team-teamid-request-userid-decline
      description: REST surface for team-teamid-request-userid-decline.
      operations:
      - method: POST
        name: teamrequestdecline
        description: 'Decline join request'
        call: teams.teamrequestdecline
        with:
          teamId: rest.path.teamId
          userId: rest.path.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/team/{teamId}/kick/{userId}
      name: team-teamid-kick-userid
      description: REST surface for team-teamid-kick-userid.
      operations:
      - method: POST
        name: teamidkickuserid
        description: 'Kick a user from your team'
        call: teams.teamidkickuserid
        with:
          teamId: rest.path.teamId
          userId: rest.path.userId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/team/{teamId}/pm-all
      name: team-teamid-pm-all
      description: REST surface for team-teamid-pm-all.
      operations:
      - method: POST
        name: teamidpmall
        description: 'Message all members'
        call: teams.teamidpmall
        with:
          teamId: rest.path.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: teams-mcp
    port: 9090
    transport: http
    description: MCP adapter for Lichess Teams. One tool per consumed operation.
    tools:
    - name: lichess-apiteamswiss
      description: 'Get team swiss tournaments'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.apiteamswiss
      with:
        teamId: tools.teamId
        max: tools.max
        status: tools.status
        createdBy: tools.createdBy
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamshow
      description: 'Get a single team'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamshow
      with:
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamall
      description: 'Get popular teams'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamall
      with:
        page: tools.page
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamofusername
      description: 'Teams of a player'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamofusername
      with:
        username: tools.username
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamsearch
      description: 'Search teams'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamsearch
      with:
        text: tools.text
        page: tools.page
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamidusers
      description: 'Get members of a team'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamidusers
      with:
        teamId: tools.teamId
        full: tools.full
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-apiteamarena
      description: 'Get team Arena tournaments'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.apiteamarena
      with:
        teamId: tools.teamId
        max: tools.max
        status: tools.status
        createdBy: tools.createdBy
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamidjoin
      description: 'Join a team'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamidjoin
      with:
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamidquit
      description: 'Leave a team'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamidquit
      with:
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamrequests
      description: 'Get join requests'
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: teams.teamrequests
      with:
        teamId: tools.teamId
        declined: tools.declined
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamrequestaccept
      description: 'Accept join request'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamrequestaccept
      with:
        teamId: tools.teamId
        userId: tools.userId
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamrequestdecline
      description: 'Decline join request'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamrequestdecline
      with:
        teamId: tools.teamId
        userId: tools.userId
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamidkickuserid
      description: 'Kick a user from your team'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamidkickuserid
      with:
        teamId: tools.teamId
        userId: tools.userId
      outputParameters:
      - type: object
        mapping: $.
    - name: lichess-teamidpmall
      description: 'Message all members'
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: teams.teamidpmall
      with:
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.