vrchat_create_instance
Create a new VRChat world instance with customizable privacy settings, region selection, and access controls for multiplayer sessions.
Instructions
Create a new instance of a world.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| worldId | Yes | ||
| type | Yes | ||
| region | No | us | |
| ownerId | No | ||
| roleIds | No | ||
| groupAccessType | No | ||
| queueEnabled | No | ||
| closedAt | No | ||
| canRequestInvite | No | ||
| hardClose | No | ||
| inviteOnly | No |
Implementation Reference
- src/tools/instances.ts:54-84 (handler)Executes the tool logic: authenticates VRChat client, calls instancesApi.createInstance with parameters, returns JSON stringified instance data or error message.async (params) => { try { await vrchatClient.auth() const instance = await vrchatClient.instancesApi.createInstance({ worldId: params.worldId, type: params.type, region: params.region, ownerId: params.ownerId, roleIds: params.roleIds, groupAccessType: params.groupAccessType, queueEnabled: params.queueEnabled, closedAt: params.closedAt, canRequestInvite: params.canRequestInvite, hardClose: params.hardClose, inviteOnly: params.inviteOnly, }) return { content: [{ type: 'text', text: JSON.stringify(instance.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to create instance: ' + error }] } } }
- src/tools/instances.ts:41-53 (schema)Zod input schema defining parameters for creating a VRChat instance, including worldId, instance type, region, and optional fields like ownerId, roles, etc.{ worldId: z.string(), type: z.enum(['public', 'hidden', 'friends', 'private', 'group']), region: z.enum(['us', 'use', 'eu', 'jp', 'unknown']).default('us'), ownerId: z.string().nullable().optional(), roleIds: z.array(z.string()).optional(), groupAccessType: z.enum(['members', 'plus', 'public']).optional(), queueEnabled: z.boolean().optional(), closedAt: z.string().optional(), // date-time format canRequestInvite: z.boolean().optional(), hardClose: z.boolean().optional(), inviteOnly: z.boolean().optional(), },
- src/tools/instances.ts:36-85 (registration)Full server.tool registration call for 'vrchat_create_instance', including name, description, input schema, and inline handler function.server.tool( // Name 'vrchat_create_instance', // Description 'Create a new instance of a world.', { worldId: z.string(), type: z.enum(['public', 'hidden', 'friends', 'private', 'group']), region: z.enum(['us', 'use', 'eu', 'jp', 'unknown']).default('us'), ownerId: z.string().nullable().optional(), roleIds: z.array(z.string()).optional(), groupAccessType: z.enum(['members', 'plus', 'public']).optional(), queueEnabled: z.boolean().optional(), closedAt: z.string().optional(), // date-time format canRequestInvite: z.boolean().optional(), hardClose: z.boolean().optional(), inviteOnly: z.boolean().optional(), }, async (params) => { try { await vrchatClient.auth() const instance = await vrchatClient.instancesApi.createInstance({ worldId: params.worldId, type: params.type, region: params.region, ownerId: params.ownerId, roleIds: params.roleIds, groupAccessType: params.groupAccessType, queueEnabled: params.queueEnabled, closedAt: params.closedAt, canRequestInvite: params.canRequestInvite, hardClose: params.hardClose, inviteOnly: params.inviteOnly, }) return { content: [{ type: 'text', text: JSON.stringify(instance.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to create instance: ' + error }] } } } )
- src/main.ts:32-33 (registration)Invocation of createInstancesTools in the main server setup, which registers the vrchat_create_instance tool.createWorldsTools(server, vrchatClient) createInstancesTools(server, vrchatClient)