vrchat_search_worlds
Search VRChat worlds by name, tags, or filters to find specific virtual environments based on popularity, creation date, or user ownership.
Instructions
Search and list worlds by query filters.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| featured | No | Return featured worlds only | |
| sort | No | Sort worlds by a specific criteria | |
| user | No | Filter by the specified user, currently only supports "me" to see your own worlds | |
| userId | No | Filter worlds by a specific VRChat user ID | |
| n | No | Number of worlds to return, from 1 to 100 | |
| order | No | Sort results in ascending or descending order | |
| offset | No | Offset for pagination, minimum 0 | |
| search | No | Search worlds by name or other text fields | |
| tag | No | Filter worlds by a specific tag | |
| notag | No | Exclude worlds with a specific tag |
Implementation Reference
- src/tools/worlds.ts:60-89 (handler)Handler function executing the tool: authenticates, calls vrchatClient.worldsApi.searchWorlds with input params, returns JSON results or error.async (params) => { try { await vrchatClient.auth() const worlds = await vrchatClient.worldsApi.searchWorlds( params.featured, params.sort, params.user, params.userId, params.n, params.order, params.offset, params.search, params.tag, params.notag, ) return { content: [{ type: 'text', text: JSON.stringify(worlds.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to search worlds: ' + error }] } } }
- src/tools/worlds.ts:48-59 (schema)Zod schema for input parameters of vrchat_search_worlds tool.{ featured: z.boolean().optional().describe('Return featured worlds only'), sort: z.enum(['popularity', 'heat', 'trust', 'shuffle', 'random', 'favorites', 'reportScore', 'reportCount', 'publicationDate', 'labsPublicationDate', 'created', '_created_at', 'updated', '_updated_at', 'order', 'relevance', 'magic', 'name']).optional().describe('Sort worlds by a specific criteria'), user: z.enum(['me']).optional().describe('Filter by the specified user, currently only supports "me" to see your own worlds'), userId: z.string().optional().describe('Filter worlds by a specific VRChat user ID'), n: z.number().min(1).max(100).optional().describe('Number of worlds to return, from 1 to 100'), order: z.enum(['ascending', 'descending']).optional().describe('Sort results in ascending or descending order'), offset: z.number().min(0).optional().describe('Offset for pagination, minimum 0'), search: z.string().optional().describe('Search worlds by name or other text fields'), tag: z.string().optional().describe('Filter worlds by a specific tag'), notag: z.string().optional().describe('Exclude worlds with a specific tag'), },
- src/tools/worlds.ts:43-90 (registration)Direct registration of the vrchat_search_worlds tool via server.tool call within createWorldsTools function.server.tool( // Name 'vrchat_search_worlds', // Description 'Search and list worlds by query filters.', { featured: z.boolean().optional().describe('Return featured worlds only'), sort: z.enum(['popularity', 'heat', 'trust', 'shuffle', 'random', 'favorites', 'reportScore', 'reportCount', 'publicationDate', 'labsPublicationDate', 'created', '_created_at', 'updated', '_updated_at', 'order', 'relevance', 'magic', 'name']).optional().describe('Sort worlds by a specific criteria'), user: z.enum(['me']).optional().describe('Filter by the specified user, currently only supports "me" to see your own worlds'), userId: z.string().optional().describe('Filter worlds by a specific VRChat user ID'), n: z.number().min(1).max(100).optional().describe('Number of worlds to return, from 1 to 100'), order: z.enum(['ascending', 'descending']).optional().describe('Sort results in ascending or descending order'), offset: z.number().min(0).optional().describe('Offset for pagination, minimum 0'), search: z.string().optional().describe('Search worlds by name or other text fields'), tag: z.string().optional().describe('Filter worlds by a specific tag'), notag: z.string().optional().describe('Exclude worlds with a specific tag'), }, async (params) => { try { await vrchatClient.auth() const worlds = await vrchatClient.worldsApi.searchWorlds( params.featured, params.sort, params.user, params.userId, params.n, params.order, params.offset, params.search, params.tag, params.notag, ) return { content: [{ type: 'text', text: JSON.stringify(worlds.data, null, 2) }] } } catch (error) { return { content: [{ type: 'text', text: 'Failed to search worlds: ' + error }] } } } )
- src/main.ts:32-32 (registration)Top-level call to createWorldsTools which registers vrchat_search_worlds and other worlds tools on the MCP server.createWorldsTools(server, vrchatClient)