vrchat_search_worlds
Search and filter VRChat worlds by name, tags, popularity, or user-specific criteria. Sort and paginate results to discover featured, trending, or custom worlds efficiently.
Instructions
Search and list worlds by query filters.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| featured | No | Return featured worlds only | |
| n | No | Number of worlds to return, from 1 to 100 | |
| notag | No | Exclude worlds with a specific tag | |
| offset | No | Offset for pagination, minimum 0 | |
| order | No | Sort results in ascending or descending order | |
| search | No | Search worlds by name or other text fields | |
| sort | No | Sort worlds by a specific criteria | |
| tag | No | Filter worlds by a specific tag | |
| 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 |
Implementation Reference
- src/tools/worlds.ts:60-90 (handler)Handler function that executes the tool logic: authenticates VRChat client, calls searchWorlds API with parameters, returns JSON data 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 input schema defining parameters for searching worlds, including filters, sorting, pagination, and search query.{ 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-91 (registration)Registration of the vrchat_search_worlds tool using server.tool(), including name, description, schema, and inline handler.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 }] } } } ) }