Unity · Capability

Unity Multiplayer Services

Unified capability combining Unity Lobby, Matchmaker, and Multiplay Game Server Hosting APIs for complete multiplayer session management. Enables player discovery, skill-based matching, server allocation, and session lifecycle management.

Run with Naftiko UnityMultiplayerLobbyMatchmakingGame Server HostingOnline Gaming

What You Can Do

POST
Create lobby — Create a New Game Lobby
/v1/lobbies
GET
Get lobby — Get Lobby Details
/v1/lobbies/{lobbyId}
POST
Search lobbies — Search Available Lobbies
/v1/lobbies/search
POST
Create ticket — Enter Matchmaking Queue
/v1/matchmaking/tickets
GET
Get ticket status — Get Matchmaking Status
/v1/matchmaking/tickets/{ticketId}
DELETE
Cancel ticket — Cancel Matchmaking
/v1/matchmaking/tickets/{ticketId}

MCP Tools

create-game-lobby

Create a new multiplayer game lobby

get-lobby-details

Get the current state of a game lobby

read-only
join-game-lobby

Join an existing game lobby by ID

search-available-lobbies

Search for available public game lobbies

read-only
close-game-lobby

Delete and close a game lobby

idempotent
start-matchmaking

Enter the matchmaking queue for a game session

check-matchmaking-status

Check if a match has been found for a matchmaking ticket

read-only
cancel-matchmaking

Cancel an active matchmaking ticket

idempotent
list-matchmaking-queues

List all configured matchmaking queues

read-only

Capability Spec

multiplayer-services.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Unity Multiplayer Services
  description: Unified capability combining Unity Lobby, Matchmaker, and Multiplay Game Server Hosting APIs for complete multiplayer
    session management. Enables player discovery, skill-based matching, server allocation, and session lifecycle management.
  tags:
  - Unity
  - Multiplayer
  - Lobby
  - Matchmaking
  - Game Server Hosting
  - Online Gaming
  created: '2026-05-03'
  modified: '2026-05-06'
binds:
- namespace: env
  keys:
    UNITY_LOBBY_TOKEN: UNITY_LOBBY_TOKEN
    UNITY_MATCHMAKER_TOKEN: UNITY_MATCHMAKER_TOKEN
    UNITY_MULTIPLAY_TOKEN: UNITY_MULTIPLAY_TOKEN
capability:
  consumes:
  - type: http
    namespace: unity-lobby
    baseUri: https://lobby.services.api.unity.com
    description: Unity Lobby API for multiplayer lobby management
    authentication:
      type: bearer
      token: '{{UNITY_LOBBY_TOKEN}}'
    resources:
    - name: lobbies
      path: /v1/lobbies
      description: Lobby creation and listing
      operations:
      - name: create-lobby
        method: POST
        description: Create a new multiplayer lobby
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            name: '{{tools.name}}'
            maxPlayers: '{{tools.max_players}}'
            isPrivate: '{{tools.is_private}}'
    - name: lobby-by-id
      path: /v1/lobbies/{lobbyId}
      description: Lobby management by ID
      operations:
      - name: get-lobby
        method: GET
        description: Get lobby details
        inputParameters:
        - name: lobbyId
          in: path
          type: string
          required: true
          description: Lobby identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: update-lobby
        method: PATCH
        description: Update lobby configuration
        inputParameters:
        - name: lobbyId
          in: path
          type: string
          required: true
          description: Lobby identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            name: '{{tools.name}}'
            isLocked: '{{tools.is_locked}}'
      - name: delete-lobby
        method: DELETE
        description: Delete a lobby
        inputParameters:
        - name: lobbyId
          in: path
          type: string
          required: true
          description: Lobby identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: lobby-join
      path: /v1/lobbies/{lobbyId}/join
      description: Join a lobby by ID
      operations:
      - name: join-lobby-by-id
        method: POST
        description: Join a lobby using its ID
        inputParameters:
        - name: lobbyId
          in: path
          type: string
          required: true
          description: Lobby identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            playerId: '{{tools.player_id}}'
    - name: lobby-by-code
      path: /v1/lobbies/code/{lobbyCode}
      description: Join a lobby by code
      operations:
      - name: join-lobby-by-code
        method: POST
        description: Join a lobby using its join code
        inputParameters:
        - name: lobbyCode
          in: path
          type: string
          required: true
          description: Lobby join code
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            playerId: '{{tools.player_id}}'
    - name: lobby-query
      path: /v1/lobbies/query
      description: Search for available lobbies
      operations:
      - name: query-lobbies
        method: POST
        description: Search for public lobbies with filters
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            count: '{{tools.count}}'
    - name: lobby-heartbeat
      path: /v1/lobbies/{lobbyId}/heartbeat
      description: Lobby heartbeat
      operations:
      - name: heartbeat-lobby
        method: POST
        description: Send heartbeat to keep lobby active
        inputParameters:
        - name: lobbyId
          in: path
          type: string
          required: true
          description: Lobby identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  - type: http
    namespace: unity-matchmaker
    baseUri: https://matchmaker.services.api.unity.com
    description: Unity Matchmaker API for player matching
    authentication:
      type: bearer
      token: '{{UNITY_MATCHMAKER_TOKEN}}'
    resources:
    - name: tickets
      path: /v3/projects/{projectId}/environments/{environmentId}/tickets
      description: Matchmaking ticket management
      operations:
      - name: create-ticket
        method: POST
        description: Create a matchmaking ticket
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
          description: Unity project identifier
        - name: environmentId
          in: path
          type: string
          required: true
          description: Environment identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            players: '{{tools.players}}'
            queueName: '{{tools.queue_name}}'
    - name: ticket-by-id
      path: /v3/projects/{projectId}/environments/{environmentId}/tickets/{ticketId}
      description: Ticket status and deletion
      operations:
      - name: get-ticket
        method: GET
        description: Get matchmaking ticket status
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
          description: Unity project identifier
        - name: environmentId
          in: path
          type: string
          required: true
          description: Environment identifier
        - name: ticketId
          in: path
          type: string
          required: true
          description: Ticket identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-ticket
        method: DELETE
        description: Cancel a matchmaking ticket
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
          description: Unity project identifier
        - name: environmentId
          in: path
          type: string
          required: true
          description: Environment identifier
        - name: ticketId
          in: path
          type: string
          required: true
          description: Ticket identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: queues
      path: /v3/projects/{projectId}/environments/{environmentId}/queues
      description: Matchmaking queue configuration
      operations:
      - name: list-queues
        method: GET
        description: List all matchmaking queues
        inputParameters:
        - name: projectId
          in: path
          type: string
          required: true
          description: Unity project identifier
        - name: environmentId
          in: path
          type: string
          required: true
          description: Environment identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8081
    namespace: unity-multiplayer-api
    description: Unified REST API for Unity multiplayer services including lobby creation, matchmaking, and server allocation.
    resources:
    - path: /v1/lobbies
      name: lobbies
      description: Game lobby management
      operations:
      - method: POST
        name: create-lobby
        description: Create a New Game Lobby
        call: unity-lobby.create-lobby
        with: {}
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/lobbies/{lobbyId}
      name: lobby
      description: Individual lobby operations
      operations:
      - method: GET
        name: get-lobby
        description: Get Lobby Details
        call: unity-lobby.get-lobby
        with:
          lobbyId: rest.lobbyId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/lobbies/search
      name: lobby-search
      description: Lobby discovery
      operations:
      - method: POST
        name: search-lobbies
        description: Search Available Lobbies
        call: unity-lobby.query-lobbies
        with: {}
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/matchmaking/tickets
      name: matchmaking-tickets
      description: Matchmaking queue management
      operations:
      - method: POST
        name: create-ticket
        description: Enter Matchmaking Queue
        call: unity-matchmaker.create-ticket
        with:
          projectId: rest.projectId
          environmentId: rest.environmentId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/matchmaking/tickets/{ticketId}
      name: matchmaking-ticket
      description: Individual matchmaking ticket
      operations:
      - method: GET
        name: get-ticket-status
        description: Get Matchmaking Status
        call: unity-matchmaker.get-ticket
        with:
          projectId: rest.projectId
          environmentId: rest.environmentId
          ticketId: rest.ticketId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: cancel-ticket
        description: Cancel Matchmaking
        call: unity-matchmaker.delete-ticket
        with:
          projectId: rest.projectId
          environmentId: rest.environmentId
          ticketId: rest.ticketId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9081
    namespace: unity-multiplayer-mcp
    transport: http
    description: MCP server for AI-assisted Unity multiplayer session management.
    tools:
    - name: create-game-lobby
      description: Create a new multiplayer game lobby
      hints:
        readOnly: false
        idempotent: false
      call: unity-lobby.create-lobby
      with:
        name: tools.name
        max_players: tools.max_players
        is_private: tools.is_private
      outputParameters:
      - type: object
        mapping: $.
    - name: get-lobby-details
      description: Get the current state of a game lobby
      hints:
        readOnly: true
        openWorld: false
      call: unity-lobby.get-lobby
      with:
        lobbyId: tools.lobbyId
      outputParameters:
      - type: object
        mapping: $.
    - name: join-game-lobby
      description: Join an existing game lobby by ID
      hints:
        readOnly: false
        idempotent: false
      call: unity-lobby.join-lobby-by-id
      with:
        lobbyId: tools.lobbyId
        player_id: tools.player_id
      outputParameters:
      - type: object
        mapping: $.
    - name: search-available-lobbies
      description: Search for available public game lobbies
      hints:
        readOnly: true
        openWorld: true
      call: unity-lobby.query-lobbies
      with:
        count: tools.count
      outputParameters:
      - type: object
        mapping: $.
    - name: close-game-lobby
      description: Delete and close a game lobby
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: unity-lobby.delete-lobby
      with:
        lobbyId: tools.lobbyId
      outputParameters:
      - type: object
        mapping: $.
    - name: start-matchmaking
      description: Enter the matchmaking queue for a game session
      hints:
        readOnly: false
        idempotent: false
      call: unity-matchmaker.create-ticket
      with:
        projectId: tools.projectId
        environmentId: tools.environmentId
        players: tools.players
        queue_name: tools.queue_name
      outputParameters:
      - type: object
        mapping: $.
    - name: check-matchmaking-status
      description: Check if a match has been found for a matchmaking ticket
      hints:
        readOnly: true
        openWorld: false
      call: unity-matchmaker.get-ticket
      with:
        projectId: tools.projectId
        environmentId: tools.environmentId
        ticketId: tools.ticketId
      outputParameters:
      - type: object
        mapping: $.
    - name: cancel-matchmaking
      description: Cancel an active matchmaking ticket
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: unity-matchmaker.delete-ticket
      with:
        projectId: tools.projectId
        environmentId: tools.environmentId
        ticketId: tools.ticketId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-matchmaking-queues
      description: List all configured matchmaking queues
      hints:
        readOnly: true
        openWorld: true
      call: unity-matchmaker.list-queues
      with:
        projectId: tools.projectId
        environmentId: tools.environmentId
      outputParameters:
      - type: object
        mapping: $.