naftiko: 1.0.0-alpha2 info: label: Roblox Experience Management description: Unified workflow capability for managing Roblox experiences using the Open Cloud API. Combines universe configuration, place publishing, data store management, cross-server messaging, player moderation, and community management into workflows for Roblox game developers and operations teams. tags: - Gaming - Game Development - Roblox - Open Cloud - Experiences - Metaverse created: '2026-05-02' modified: '2026-05-06' binds: - namespace: env keys: ROBLOX_API_KEY: ROBLOX_API_KEY capability: consumes: - type: http namespace: roblox baseUri: https://apis.roblox.com description: Roblox Open Cloud API authentication: type: apikey key: x-api-key value: '{{ROBLOX_API_KEY}}' placement: header resources: - name: universes path: /cloud/v2/universes/{universeId} description: Experience (universe) management operations: - name: get-universe method: GET description: Get details about a Roblox experience inputParameters: - name: universeId in: path type: string required: true description: The universe ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-universe method: PATCH description: Update settings for an experience inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: updateMask in: query type: string required: false description: Fields to update outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: displayName: '{{tools.displayName}}' description: '{{tools.description}}' - name: places path: /cloud/v2/universes/{universeId}/places/{placeId} description: Place management operations: - name: get-place method: GET description: Get details about a place inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: placeId in: path type: string required: true description: The place ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: data-stores path: /datastores/v1/universes/{universeId}/standard-datastores description: Data store listing operations: - name: list-data-stores method: GET description: List all data stores in a universe inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: prefix in: query type: string required: false description: Filter by name prefix - name: limit in: query type: integer required: false description: Maximum results - name: cursor in: query type: string required: false description: Pagination cursor outputRawFormat: json outputParameters: - name: result type: object value: $. - name: data-store-entries path: /datastores/v1/universes/{universeId}/standard-datastores/datastore/entries/entry description: Data store entry operations operations: - name: get-data-store-entry method: GET description: Retrieve a data store entry value inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: datastoreName in: query type: string required: true description: Data store name - name: entryKey in: query type: string required: true description: Entry key - name: scope in: query type: string required: false description: 'Entry scope (default: global)' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: set-data-store-entry method: POST description: Set or update a data store entry inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: datastoreName in: query type: string required: true description: Data store name - name: entryKey in: query type: string required: true description: Entry key outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: value: '{{tools.value}}' - name: delete-data-store-entry method: DELETE description: Delete a data store entry inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: datastoreName in: query type: string required: true description: Data store name - name: entryKey in: query type: string required: true description: Entry key outputRawFormat: json outputParameters: - name: result type: object value: $. - name: messaging path: /messaging-service/v1/universes/{universeId}/topics/{topic} description: Cross-server messaging operations: - name: publish-message method: POST description: Publish a message to a topic across game servers inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: topic in: path type: string required: true description: Message topic name outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: message: '{{tools.message}}' - name: users path: /cloud/v2/users/{userId} description: User information operations: - name: get-user method: GET description: Get a Roblox user by ID inputParameters: - name: userId in: path type: string required: true description: The Roblox user ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: groups path: /cloud/v2/groups/{groupId} description: Group management operations: - name: get-group method: GET description: Get a Roblox group by ID inputParameters: - name: groupId in: path type: string required: true description: The group ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: group-memberships path: /cloud/v2/groups/{groupId}/memberships description: Group membership management operations: - name: list-group-memberships method: GET description: List members and their roles in a group inputParameters: - name: groupId in: path type: string required: true description: The group ID - name: maxPageSize in: query type: integer required: false description: Maximum results per page - name: pageToken in: query type: string required: false description: Pagination token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: user-restrictions path: /cloud/v2/universes/{universeId}/user-restrictions/{userId} description: User ban management operations: - name: get-user-restriction method: GET description: Check if a user is restricted from a universe inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: userId in: path type: string required: true description: The user ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: update-user-restriction method: PATCH description: Ban or unban a user from a universe inputParameters: - name: universeId in: path type: string required: true description: The universe ID - name: userId in: path type: string required: true description: The user ID outputRawFormat: json outputParameters: - name: result type: object value: $. body: type: json data: active: '{{tools.active}}' duration: '{{tools.duration}}' displayReason: '{{tools.displayReason}}' exposes: - type: rest port: 8080 namespace: roblox-experience-api description: Unified REST API for Roblox experience management including universes, data stores, players, and communities. resources: - path: /v1/universes/{universeId} name: universe description: Experience universe management operations: - method: GET name: get-universe description: Get details about a Roblox experience call: roblox.get-universe with: universeId: rest.universeId outputParameters: - type: object mapping: $. - method: PATCH name: update-universe description: Update experience settings call: roblox.update-universe with: universeId: rest.universeId outputParameters: - type: object mapping: $. - path: /v1/universes/{universeId}/places/{placeId} name: place description: Place management operations: - method: GET name: get-place description: Get details about a place call: roblox.get-place with: universeId: rest.universeId placeId: rest.placeId outputParameters: - type: object mapping: $. - path: /v1/universes/{universeId}/data-stores name: data-stores description: Data store management operations: - method: GET name: list-data-stores description: List all data stores in a universe call: roblox.list-data-stores with: universeId: rest.universeId prefix: rest.prefix limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/universes/{universeId}/data-stores/{storeName}/entries name: data-store-entries description: Data store entry management operations: - method: GET name: get-entry description: Get a data store entry call: roblox.get-data-store-entry with: universeId: rest.universeId datastoreName: rest.storeName entryKey: rest.entryKey outputParameters: - type: object mapping: $. - method: POST name: set-entry description: Set a data store entry call: roblox.set-data-store-entry with: universeId: rest.universeId datastoreName: rest.storeName entryKey: rest.entryKey outputParameters: - type: object mapping: $. - method: DELETE name: delete-entry description: Delete a data store entry call: roblox.delete-data-store-entry with: universeId: rest.universeId datastoreName: rest.storeName entryKey: rest.entryKey outputParameters: - type: object mapping: $. - path: /v1/universes/{universeId}/messaging/{topic} name: messaging description: Cross-server messaging operations: - method: POST name: publish-message description: Publish a message to all universe servers call: roblox.publish-message with: universeId: rest.universeId topic: rest.topic outputParameters: - type: object mapping: $. - path: /v1/universes/{universeId}/user-restrictions/{userId} name: user-restrictions description: Player moderation operations: - method: GET name: get-restriction description: Check player restriction status call: roblox.get-user-restriction with: universeId: rest.universeId userId: rest.userId outputParameters: - type: object mapping: $. - method: PATCH name: update-restriction description: Ban or unban a player call: roblox.update-user-restriction with: universeId: rest.universeId userId: rest.userId outputParameters: - type: object mapping: $. - path: /v1/users/{userId} name: users description: User information operations: - method: GET name: get-user description: Get a Roblox user call: roblox.get-user with: userId: rest.userId outputParameters: - type: object mapping: $. - path: /v1/groups/{groupId} name: groups description: Community group management operations: - method: GET name: get-group description: Get a Roblox group call: roblox.get-group with: groupId: rest.groupId outputParameters: - type: object mapping: $. - path: /v1/groups/{groupId}/memberships name: group-memberships description: Group membership operations: - method: GET name: list-memberships description: List group members and roles call: roblox.list-group-memberships with: groupId: rest.groupId maxPageSize: rest.maxPageSize pageToken: rest.pageToken outputParameters: - type: object mapping: $. - type: mcp port: 9080 namespace: roblox-experience-mcp transport: http description: MCP server for AI-assisted Roblox experience management and community operations. tools: - name: get-universe description: Get details about a Roblox experience including settings and metadata hints: readOnly: true openWorld: false call: roblox.get-universe with: universeId: tools.universeId outputParameters: - type: object mapping: $. - name: update-universe description: Update the settings for a Roblox experience hints: readOnly: false destructive: false idempotent: true call: roblox.update-universe with: universeId: tools.universeId outputParameters: - type: object mapping: $. - name: get-place description: Get details about a specific place within a universe hints: readOnly: true openWorld: false call: roblox.get-place with: universeId: tools.universeId placeId: tools.placeId outputParameters: - type: object mapping: $. - name: list-data-stores description: List all data stores available in a universe hints: readOnly: true openWorld: false call: roblox.list-data-stores with: universeId: tools.universeId prefix: tools.prefix outputParameters: - type: object mapping: $. - name: get-data-store-entry description: Retrieve a player or game data store entry by key hints: readOnly: true openWorld: false call: roblox.get-data-store-entry with: universeId: tools.universeId datastoreName: tools.datastoreName entryKey: tools.entryKey scope: tools.scope outputParameters: - type: object mapping: $. - name: set-data-store-entry description: Set or update a data store entry value hints: readOnly: false destructive: false idempotent: true call: roblox.set-data-store-entry with: universeId: tools.universeId datastoreName: tools.datastoreName entryKey: tools.entryKey outputParameters: - type: object mapping: $. - name: delete-data-store-entry description: Delete a data store entry hints: readOnly: false destructive: true idempotent: true call: roblox.delete-data-store-entry with: universeId: tools.universeId datastoreName: tools.datastoreName entryKey: tools.entryKey outputParameters: - type: object mapping: $. - name: publish-message description: Broadcast a message to all active servers in a universe hints: readOnly: false destructive: false call: roblox.publish-message with: universeId: tools.universeId topic: tools.topic outputParameters: - type: object mapping: $. - name: get-user description: Get information about a Roblox player by user ID hints: readOnly: true openWorld: true call: roblox.get-user with: userId: tools.userId outputParameters: - type: object mapping: $. - name: get-group description: Get information about a Roblox community group hints: readOnly: true openWorld: true call: roblox.get-group with: groupId: tools.groupId outputParameters: - type: object mapping: $. - name: list-group-memberships description: List members and their roles in a Roblox group hints: readOnly: true openWorld: false call: roblox.list-group-memberships with: groupId: tools.groupId maxPageSize: tools.maxPageSize pageToken: tools.pageToken outputParameters: - type: object mapping: $. - name: get-user-restriction description: Check if a player is banned or restricted from a universe hints: readOnly: true openWorld: false call: roblox.get-user-restriction with: universeId: tools.universeId userId: tools.userId outputParameters: - type: object mapping: $. - name: ban-player description: Ban a player from accessing a universe (set user restriction) hints: readOnly: false destructive: true idempotent: true call: roblox.update-user-restriction with: universeId: tools.universeId userId: tools.userId outputParameters: - type: object mapping: $.